ansible以及playbook的介绍使用

ansible以及playbook的介绍使用

  1. Ansible 特点:
  •  部署简单,只需在主控端部署 Ansible 环境,被控端无需做任何操作。
  • 默认使用 SSH(Secure Shell)协议对设备进行管理。
  •  主从集中化管理。
  •  配置简单、功能强大、扩展性强。
  •  支持 API 及自定义模块,可通过 Python 轻松扩展。
  •  通过 Playbooks 来定制强大的配置、状态管理。
  •  对云计算平台、大数据都有很好的支持。
  •  提供一个功能强大、操作性强的 Web 管理界面和 REST API 接口 — AWX 平台。

     2.  Ansible 与 SaltStack:

  • 最大的区别是 Ansible 无需在被监控主机部署任何客户端代理,默认通过 SSH 通道进行远程命令执行或下发配置。
  • 相同点是都具备功能强大、灵活的系统管理、状态配置,都使用 YAML 格式来描述配置,两者都提供丰富的模板及 API,对云计算平台、大数据都有很好的支持。

     3. 参考技术博客 https://blog.csdn.net/zhao12795969/article/details/80888492
     4. 关于ansible常用模块的介绍此处略,可以参考上面的链接查看
     5. 以下是关于playbook的介绍

  • playbook的核心元素: 

  hosts:主机 
  tasks:任务列表 
  variables: 变量
  templates:包含了模板语法的文本文件 
  handlers:由特定条件触发的任务

  •  playbooks配置文件的基础组件: 

  hosts:运行指定任务的目标主机 
  remote_user:在远程主机上执行任务的用户 
  sudo_user: 
  tasks:任务列表 
  模块,模块参数; 
     6. 批量安装nginx———playbook

  • 虚拟机克隆三台主机

1)一台作为控制机  #IP:192.168.141.129 

2)另外两台作为被控制机

3)并做好ssh免密码登陆(将控制机的公钥分发给两台被控制机)--步骤:略

 

  •  配置被控制主机组
vim /etc/ansible/hosts
...
[web]
## alpha.example.org
## beta.example.org
192.168.141.130 #被控制机组的IP地址
192.168.141.131 #被控制机组的IP地址
....

 

  •  在/etc/ansible/roles下生成对应的目录结构:
mkdir -pv ./nginx/{files,templates,vars,tasks,handlers,meta,default}

 

  • 进入roles/nginx目录下
  • 定义tasks/main.yml 配置文件
  vim  tasks/main.yml 
   - name: cp
     copy: src=nginx-1.10.2-1.el7.ngx.x86_64.rpm dest=/app/nginx-1.10.2-1.el7.ngx.x86_64.rpm
     #copy模块将nginx安装包推给主机节点

   - name: install
     yum: name=/app/nginx-1.10.2-1.el7.ngx.x86_64.rpm state=latest
     #yum模块在主机节点上安装nginx服务

   - name: conf
     template: src=nginx.conf.j2 dest=/etc/nginx/nginx.conf
     tags: nginxconf
     notify: new conf to reload
     #将nginx.conf.j2配置文件推给主机组

   - name: start service
     service: name=nginx state=started enabled=true 
     tags: startnginx
     #service模块启动主机组上的nginx服务
  • 定义nginx.conf.j2文件
yum -y install epel-release 
yum -y install nginx 
cp /etc/nginx/nginx.conf ./nginx.conf.j2
vim nginx.conf.j2    #这里我们只自定义了监听端口一个变量  
...
  server {
             listen      {{ nginxport }}; 
...

 

  • 修改变量文件
vim vars/main.yml
nginxport: 9999 
#该变量在服务器端的nginx.conf文件中有将端口定义为{{ nginxport }} ,因此这里需要给变量赋值。

 

  • 定义handlers文件
vim handlers/main.yml
- name: new conf to reload
   service: name=nginx state=restarted

 

  • 定义/etc/ansible/nginx.yml的playbook文件
vim /etc/ansible/nginx.yml
- hosts: web
   remote_user: root
   roles:
    - nginx
  •  执行
ansible-playbook /etc/ansible/nginx.yml

 

  •  检验是否成功
ansible web -m shell-a "curl localhost:9999 -I | grep nginx"
输出如下内容表示成功:
192.168.141.130 | SUCCESS | rc=0 >>
Server: nginx/1.12.2  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0  3700    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0

192.168.141.131 | SUCCESS | rc=0 >>
Server: nginx/1.12.2  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0  3700    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0


 

你可能感兴趣的:(ansible以及playbook的介绍使用)