一、ansible部署
1.dns resolve(解析) 2.install ansible
[ansible-server]# vim /etc/hosts #yum install -y epel-release
192.168.0.115 ansible #yum install -y ansible
192.168.0.104 host1 #rpm -qc ansible(查看配置文件)
192.168.0.105 host2 # ansible-doc -l (查看所有模块)
192.168.0.108 host3 #ansible-doc -s yum (看yum模块,了解其功能)
192.168.0.109 host4
注:该文件夹各台机子相同
3.ssh-key(可选) 使各台机子免密登录
#ssh-keygen
#ssh-copy-id IP地址
二、基本操作
Inventory -主机清单
1、 #vim /etc/ansible/hosts(增加主机组)
[webserver]
host1
host2
host3
host4
2、子分组
[apache]
host[1:2]
[nginx]
host[3:4]
[webserver:children]
apache
nginx
[webserver:vars]
ansible_ssh_user='root'
ansible_ssh_pass='666666'
3、自定义主机列表
#vim hostlist
[dockers]
host1
host2
[dockers:vars]
ansible_ssh_user='root'
ansible_ssh_pass='666666'
#ansible -i hostlist dockers -m ping -o (测试)
三、Ad-Hoc-点对点模式
1.shell模块(-m指定模块,-a为追加操作 -o为压缩输出)
#ansible host2 -m shell -a 'yum -y install httpd' -o 部署apache
#ansible host3 -m shell -a 'uptime' -o 查询系统负载
#ansible webserver -m shell -a 'hostname' -o -f 2 -f 2 指定线程数
#ansible webserver -m shell -a 'hostname' -o 获取主机名
#ansible-doc shell (帮助)
2.复制模块
#ansible webserver -m copy -a 'src=/etc/hosts dest=/tmp/2.txt owner=root group=bin mode=777 backup=yes' (复制带备份)
3.用户模块
创建用户 #ansible webserver -m user -a 'name=qianfeng state=present'
删除用户 #ansible webserver -m user -a 'name=qianfeng state=absent'
修改密码 1.生成加密密码 #echo '777777' | openssl passwd -1 -stdin
($1$XVzsJMDr$5wI4oUaQ.emxap6s.N272.)
2.修改密码 #ansible webserver -m user -a 'name=qianfeng password="$1$XVzsJMDr$5wI4oUaQ.emxap6s.N272."'
修改#shell ansible webserver -m user -a 'name=qianfeng shell=/sbin/nologin append=yes' 追加
4.软件包管理
#ansible host2 -m yum -a 'name="httpd" state=latest' 安装apache。latest最新的
[root@localhost ~]# ansible-doc yum
- state
install (`present' or `installed', `latest')
remove (`absent' or`removed') a package
5.服务模块
#ansible host2 -m service -a 'name=httpd state=started'
#ansible host2 -m service -a 'name=httpd state=started enabled=yes'
#ansible host2 -m service -a 'name=httpd state=stopped'
#ansible host2 -m service -a 'name=httpd state=restarted'
#ansible host2 -m service -a 'name=httpd state=started enabled=no'
6.文件模块
#ansible host1 -m file -a 'path=/tmp/88.txt mode=777 state=touch'
#ansible host1 -m file -a 'path=/tmp/99 mode=777 state=directory'
7.收集模块
#ansible host3 -m setup
#ansible host3 -m setup -a 'filter=ansible_all_ipv4_addresses'(filter过滤)