Ansible自动化运维工具的使用
Ansible自动化运维工具的使用
host lnventory 管理主机 ip root账号密码 ssh端口
core modules 核心模块(user server yum等模块)
custom modules 自定义模块 支持任何编程语言
connection plugins 连接插件,Ansible和host通信使用
优点:
Stupied Simple ,上手简单,学习曲线平滑
SSH by default ,安全,无需安装客户端
配置简单、功能强大、扩展性强
支持API及自定义模块,可通过Python轻松扩展
通过Playbooks来定制强大的配置、状态管理
提供一个功能强大、操作性强的Web管理界面和REST API接口——AWX平台
幂等性:一个操作重复多次操作 内容不变
一、ansible安装(只在server端安装)
1、yum -y install epel-release
yum clean all
yum makecache
2、yum install ansible
二、ansibles配置(无密码登陆)
1、client:ssh-keygen #生成秘钥文件和私钥文件
2、server:scp id_rsa.pub root@192.168.88.5:/root/.ssh/authorized_keys
#把id_rsa.pub传到client端并且必须命名为authorized_keys
(ssh-copy-id -i id_rsa.pub root@192.168.88.5)传文件的另一种方法
3、server: ssh root@192.168.88.5 #测试是否实现无需密码验证登陆
4、serve:定义管控主机
vim /etc/ansible/hosts
在[webservers]下写入client ip (我这里用了两台client)
(www.[1:60].benet.com 用于多台client
ansible all 测试所有组 )
ansible webservers -m ping #查看client端是否ping通
三、ansible常用命令
ansible-doc -l #查看支持的模块
ansible命令应用基础
ansible <host-pattern> [options]
-f forks:启动并发线程数
-m model_name:要使用的模块
-a args:特有的参数
ansible webservers -m ping #查看client端是否ping通
ansible webservers -m setup #查看client端信息
ansible webservers -m copy -a "src=/root/test.txt dest=/root/test1.txt"
#copy文件到client端
ansible webservers -m user -a "name=user state=present" #在client端创建用户
ansible webservers -m user -a "name=user state=absent" #在client端删除用户
ansible webservers -m yum -a "name=tree state=latest" #yum安装
ansible webservers -m service -a "name=httpd state=stopped enabled=no" #停止httpd服务
ansible webservers -m script -a "/tmp/test.sh" #运行脚本
#查看时间
ansible webservers -m command 'date'
ansible webservers -a "date"
四、palybook
文件名为.yml结尾
用 ansible-playbook xxx.yml 运行
1、基础
2、变量(把tree给变量packages)
3、迭代(item)
4、触发器notify
只要 - name: cp http.conf 执行了就会触发handlers
handlers是在所有任务执行完之后才会触发,所有要写在最后
(写在中间不执行)
5、模板templates
改两台client的httpd的不同端口号
1)cp /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.conf.j2
vim /etc/httpd/conf/httpd.conf.j2
(j2是Jinja2 模板文件)
2)添加端口号
vim /etc/ansible/hosts
3)vim test5.yml
4)分别在两台client端查看端口号
6、单个任务执行tags
例:只执行单个add_user任务
执行命令 ansible-playbook test6.yml --tags="add_user"
7、角色roles
1)在/root目录下创建ansible_playbooks目录
2)在 ansible_playbooks目录下创建roles目录
3)在roles目录下创建角色名 如:webservsers dbservers
4)在webservsers目录下创建files,handlers,meta,tasks,templates,vars目录(不用到的目录可以不创建)
5)
files里面存放需要调用的文件
tasks里面存放要执行任务的文件(文件命名必须为main.yml)
src后的文件会自动到files里调用
handlers里面存放触发的任务的文件(文件命名必须为main.yml)
6)最后回到ansible_playbooks目录下创建一个site.yml文件
ansible-playbook site.yml 执行之后会自动调用角色webservers目录里面创建的任务