refer to 官方手册 https://docs.ansible.com/ansible/latest/modules/modules_by_category.html
refer to 中文手册 http://www.ansible.com.cn/
refer to Ansible快速入门 http://getansible.com/
建议使用Redhat Linux 7.4
0.查看linux版本
cat /etc/redhat-release
1.安装ansible
yum install ansible -y
查看ansible版本
2.更新/etc/ansible/hosts
vim /etc/ansible/hosts
(如果需要使用密码认证方式,添加host记录,例如
hk.lihuanhuan.net ansible_ssh_user=root ansible_ssh_pass='xxxx'
(如果需要使用密钥认证方式,添加host记录,例如
[group1]
hk.lihuanhuan.net
(如果需要给hosts文件加密,请参考如下流程:
refer to https://docs.ansible.com/ansible/latest/user_guide/vault.html?highlight=vault
#给hosts文件加密
ansible-vault encrypt /etc/ansible/hosts
#给hosts文件解密,文件将转换为明文
ansible-vault decrypt /etc/ansible/hosts
#查看加密文件
ansible-vault view hosts
#编辑加密文件
ansible-vault edit hosts
#使用加密后的hosts文件,交互式
ansible all -m ping --ask-vault-pass
ansible-playbook --ask-vault-pass site.yml
#使用加密后的hosts文件,加密密码存在dev-password文件中
ansible all -m ping --vault-password-file dev-password
ansible-playbook --vault-password-file dev-password site.yml
ansible-playbook site.yml --vault-password-file ~/.vault_pass.txt
)
3.更新/etc/ansible/ansible.cfg
# uncomment this to disable SSH key host checking
host_key_checking = False
4.执行你的第一条ansible命令
如果使用密码认证方式,通过以下方式连接target,例如
#如果使用密码认证方式,而且已经在hosts文件配置了正确的信息
#all ansible hosts配置的的所有hostname
# -m 表示调用ansible的module
# ping 为ansible的一个module
ansible all -m ping
如果使用密钥认证方式,通过以下方式连接target即可,例如
#group1为已经配置的group名称,-u用于指定连接target的用户名,--private-key 指定私钥文件
ansible group1 -m ping -u lihuanhuan80 --private-key /appvol/robin.private
5.使用ansible-playbook去部署一个tomcat,以下是project的结构。源代码请在这里下载https://github.com/ansible/ansible-examples/tree/master/tomcat-standalone 感谢Github上的朋友。
5.1 在/etc/ansible/hosts文件新增一个group
#ansible-vault edit hosts
#hosts文件新增部分,如果使用非root用户登陆,而且要切换到root,ansible_become_pass必须配置
[tomcat-servers]
hb.lihuanhuan.net ansible_ssh_user=root ansible_ssh_pass=password ansible_become_pass=password
5.2 在porject中site.yml配置成这样
---
# This playbook deploys a simple standalone Tomcat 7 server.
- hosts: tomcat-servers
remote_user: root
become: yes
become_method: sudo
roles:
#- selinux
- tomcat
5.3 在project中hosts配置成这样
[tomcat-servers]
hb.lihuanhuan.net
个人理解,site.yml作为ansible-playbook的入口文件,这里配置的hosts=tomcat-servers ,程序会去project的hosts文件中查找名为tomcat-servers的group和server。project中hosts文件配置的group和server要在ansible的master服务器安装目录中的/etc/ansible/hosts找到。
5.4 把修改好的ansible-playbook project上传到ansible master服务器/appvol/
5.5 在ansible的master服务器上执行ansible-playbook
ansible-playbook /appvol/tomcat-standalone/site.yml --ask-vault-pass
你会在服务器上看到执行的日志,类似下面的截图。