一般基本步骤都是安装之前,先同步时钟服务器。配置key验证
Ansible 帮助文档 https://docs.ansible.com/ansible/latest/index.html
/etc/ansible/ansible.cfg #它配置文件
/etc/ansible/hosts #主机控制清单
/etc/ansible/roles #存放角色目录,是自己创建的
Ansible –doc #帮助文档
Log_path #日志默认关闭的,需要在配置文件里面开启一下
基于key验证配置都是在ansible这台服务器操作
ssh-keygen
ssh-copy-id 加管理的IP地址 #表示将自己的公钥复制给要管理的主机
常用模块①:command(默认模块不用写)
Ansible all –a ‘service httpd start’ #把要执行的命令放在引号里面就可以了
常用模块②:针对管道符,变量号删除文件,要用shell模块
Ansible all –m shell –a ‘ls /data’ #查看文件
常用模块③:script模块 (执行脚本模块)
Ansible all –m script –a ‘/root/nginx.sh’
#在所有主机上执行当前主机的脚本
常用模块③:copy模块
Ansible all –m copy –a ‘src=/root/selinux dest=/etc/selinux backup=yes mode=755 owner=root’
#表示把当前下的文件复制到目标服务器下,并且备份了。文件权限755,所属者root。
常用模块④:fetch模块,只支持客服端节点的文件,抓取到服务端,只支持单个文件抓取
Ansible all –m fetch –a ‘src=/var/log dest=/root/mnt/hhh’
#将远端的文件抓取到当前目录下dest=/root/mnt/hhh文件下。
常用模块⑤:file模块
Ansible all –m file –a ‘path=/data/tyx state=touch’ #表示在远程创建一个文件
Ansible all –m file –a ‘path=/data/tyx state=absent’ #表示在远程删除一个文件
Ansible all –m file –a ‘path=/data/tyx state=directory’ #表示在远程新建一个文件
常用模块⑥:yum模块
Ansible all –m yum –a ‘name=/root/httpd update_cache=yes’
#yum源安装rpm包,并且更新缓存。
常用模块⑦:service模块
Ansible all –m service –a ‘name=httpd state=started enable=yes’
#启动httpd并且设置开机自启动。State=Stoped停止服务
Ansible-console #交互控制台
root@all (3)【f:5】上面如果不指定主机就会显示all 数字3表示三个主机f:5表示最大控制数目
forks 10 #表示改成10个控制
cd tanyingxin #表示切换到这个主机清单里面
Playbook剧本
Ansible playbook 有一些写好的脚本相应的网站:
ansible-galaxy list #查看下载的剧本
ansible-galaxy install geerlingguy.nginx #下载Nginx的角色
ansible-galaxy remove geerlingguy.nginx #卸载Nginx的角色
一般下载完成后会生成一个文件路径 注意看一下 是一个隐藏路径
如图1
Playbook用法:
核心元素:
/etc/ansible目录下创建一个以 .yml 结尾的文件
图2
Ansible-playbook –C tan.yml #-C表示验证我写的脚本是否错误
但是如果遇到某个服务修改了配置文件,以上面图2的方法是不会重新启动httpd的,需要与
Handlers(表示触发)和notify(表示和handlers配合)所结合。
Handlers级别跟tasks是一个级别,notify属于tasks模块下面,表示该动作做完就触发handlers。
Tags(表示标签)属于tasks模块下
演示如图3
Ansible-playbook –t 加标签名 tan.yml #表示只执行标签内的命令,如果有多个标签用逗号隔开
Ansible-playbook –e ‘pkname=httpd’ tan.yml #临时指定变量,yml里面没有赋值
下面图4表示文件里面指定变量赋值
Ansible-playbook tan.yml #因为赋值的所有可以直接推送文件
也可以先定义变量,这个模块叫vars_files,vars.yml是一个新建的文件
常用模块⑦:template模块 只能用于playbook里面写
常用于解决,比如Nginx有个自动跟随主机性能修改配比如work进程
先把anisble这台机器的Nginx原有的配置文件拷贝一份以 .j2结尾到本机
(它跟cp功能一样,只是会根据设备性能)自动修改CPU
常用模块⑧:when表示条件
常用模块⑨:item迭代机制,就是重复安装多个包,创建多个文件
Roles (角色)这个文件夹,必须和playbook是同级别,也就是同目录