安装方式:
PIP方式:
yum install python-pip python-devel -y #安装python-pip程序包及python-devel
yum install gcc glibc-devel zlib-devel rpm-build openssl-devel -y #确保服务器的gcc,glibc开发环境均已安装
pip install --upgrade pip #升级本地PIP至最新版本
pip install ansible -upgrade #安装Ansible
#执行ansible --version,有类似返回结果表示安装成功并可正常使用,其他验证安装是否成功的方式也一样,均可执行ansible-version
YUM方式:
#需事先安装EPEL源后方可找到并安装Ansible
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
来源:oschina
链接:https://my.oschina.net/u/4349041/blog/3616532