安装方式: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