安裝方式:php
PIP方式:html
yum install python-pip python-devel -y #安裝python-pip程序包及python-develpython
yum install gcc glibc-devel zlib-devel rpm-build openssl-devel -y #確保服務器的gcc,glibc開發環境均已安裝mysql
pip install --upgrade pip #升級本地PIP至最新版本linux
pip install ansible -upgrade #安裝Ansiblesql
#執行ansible --version,有相似返回結果表示安裝成功並可正常使用,其餘驗證安裝是否成功的方式也同樣,都可執行ansible-versionshell
YUM方式:vim
#需事先安裝EPEL源後方可找到並安裝Ansiblebash
rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpm服務器
#安裝Ansible
yum install ansible -y
#Ansible主機清單在/etc/ansible/hosts中
~]# vim /etc/ansible/hosts
#ansible 的主配置文件存放在 /etc/ansible/ansible.cfg,這裏就展現我零時配的選項
~]# vim /etc/ansible/ansible.cfg
#shell模塊,能夠向遠程傳輸shell命令並執行;
#登錄數據並執行命令,配置以下
~]# ansible Aliyun -m shell -a "mysql -u{{db_user}} -p{{db_passwd}} -e 'show databases;'"
本身經常使用的一些命令:
#檢測全部主機存活狀況,all或 * 號功能相同
~]# ansible all -m ping
~]# ansible '*' -m ping
#多個組之間同時執行,相互之間用「 :」(冒號)分割
~]# ansible app:app2 -m ping
#模糊匹配以HuBei開頭的全部主機
~]# ansible HuBei* -m ping
#copy模塊,傳輸本地文件到對端主機
~]# ansible app -m copy -a 'src=local_path dest=goal_path'
#unarchive模塊,批量傳輸文件並解壓zip包
~]# ansible all -m unarchive -a 'src=7.zip dest=/data/HD/' -s
#authorized_keys模塊,批量部署證書文件(先批量建立用戶後再執行),回車後輸入密鑰密碼(-s參數表示切換root權限)
~]# ansible all -m authorized_key -a "user=ben exclusive=true manage_dir=true key='$(</home/ben/.ssh/id_rsa_ben.pub)'" -k -s
Playbook:
批量建立用戶
--- - hosts: "{{ host }}" remote_user: root gather_facts: False sudo: yes tasks: - name: Create user user: name={{ user }} password={{ password | password_hash('sha512') }} state=present #user: name={{ user }} group={{groups}} password={{ password | password_hash('sha512') }} state=present - name: Create ssh directory file: path=/home/{{user}}/.ssh state=directory - name: Copy authorized_keys copy: src=/etc/ansible/user/id_rsa_{{user}}.pub dest=/home/{{user}}/.ssh/authorized_keys mode=0600 - name: Change user attribute file: path=/home/{{user}} owner={{user}} group={{user}} recurse=yes
執行:ansible-playbook add_user.yml -e "user=test password=123456 host=all"
批量刪除用戶
--- - hosts: "{{host}}" remote_user: root gather_facts: False sudo: yes tasks: - name: Del user user: name={{user}} state=absent remove=yes async: 100 poll: 0 register: result - debug: var=result - async_status: jid={{ result.ansible_job_id }} register: job_result until: job_result.finished retries: 30
執行:ansible-playbook del_user.yml -e "user=test host=all"
解決每次用密鑰執行Ansible命令時都要輸入密碼問題
Keychain是一個用來方便管理 SSH 密鑰對的程序,它能盡最大努力去減小對用戶的打擾。實際上,它就是一個 shell 腳本,驅動 ssh-agent
或者 gpg-add
來工做。一個值得注意的特性是,keychain 在多個會話中重複使用同一個 ssh-agent
進程。這意味着您只須要在機器啓動時輸入一次密碼短語便可。
#使用前要開啓vim /etc/ssh/ssh_config中的一個配置
ForwardAgent yes
~]# systemctl restart sshd
#獲取keychain文件
~]# wget http://www.funtoo.org/archive/keychain/keychain-2.7.1.tar.bz2
~]# tar -xf keychain-2.7.1.tar.bz2
~]# cd keychain-2.7.1
keychain-2.7.1
]# install -m 0755 keychain /usr/bin/
#編輯環境變量,在末尾添加以下兩行
~]# vim ~/.bash_profile
eval $(keychain --eval --agents ssh -Q --quiet /apps/ben)
eval `keychain --eval --agents ssh /apps/ben` #添加這項配置前要把key文件設置爲400權限,不然會報錯
參考資料:
https://wiki.archlinux.org/index.php/SSH_keys_(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87)#Keychain
https://www.ibm.com/developerworks/cn/linux/security/openssh/part2/index.html