Ansible-Playbook 的高效使用

前言

ansile是用于批量化管理和运维的工具,主要解决的点在于批量实现命令运行。下面主要采用场景例子的方式简单说明一些常见选项的用法

环境说明

IP主机名
192.168.1.31absible
192.168.1.32web1
192.168.1.33web2
192.168.1.34db1
192.168.1.35db2
192.168.1.36cache

[root@ansible ~]#ansible --version
ansible 2.4.2.0
python version = 2.7.5

基本使用

 [root@ansible ~]# cat  ping.yml  
---
- hosts: all    ---------> 将要执行playbook的远程集群
  remote_user: root  -------->远程的身份
  tasks:          --------->定义将要在远程主机上执行的任务列表
    - ping:       ---------->执行的模块

部署web服务

[root@ansible ~]# cat  http.yml 
---
- hosts: web
  remote_user: root
  tasks: 
    - yum: 
        name: httpd
    - service:
        name: httpd
        state: started
        enabled: yes
    - lineinfile:
        path: /etc/httpd/conf/httpd.conf
        regexp: '^Listen 80'   --------> 匹配的行
        line: 'Listen 8080'  -------> 修改后的行
    - lineinfile:
        path: /etc/httpd/conf/httpd.conf
        regexp: '#ServerName www.example.com:80'
        line: 'ServerName www.localhost.com'
    - copy:
        src: /root/index.html
        dest: /var/www/html/index.html
    - service:
        name: httpd
        state: restarted

集群的自动化部署

触发器设定

[root@ansible ~]# cat  httpconf.yml  
---
- hosts: web
  remote_user: root
  tasks: 
  - copy: 
      src: httpd.conf
      dest: /etc/httpd/conf/httpd.conf
      owner: root
      group: root
    tags: aa  --------> 对copy的模块打标签
    notify: abc    
  handlers: 
  - name: abc
    service: 
      name: httpd
      state: restarted

说明
notify可以触发多个条件
handlers当监控的资源达到阀值后要采取的操作
效果:
当远程的集群配置文件修改,自动重启服务

变量应用

[root@ansible ~]# cat  user.yml  
---
- hosts: cache
  remote_user: root
  vars: 
    username: haha    ------->  定义变量名
  tasks: 
    - user: 
        name: "{{username}}"      -------------> 调用变量名
    - shell: echo 1 |   passwd  --stdin  "{{username}}"
    - shell: chage -d  0 "{{username}}"

变量名的表示方法:”{{变量名}}“
远程集群批量创建用户

when 判断

[root@ansible ~]# cat load.yml  
---
- hosts: web
  remote_user: root
  tasks: 
    - shell: uptime   |  awk  '{printf ("%.2f", $(NF-2))  }'
      register: load     --------->  收集shell命令的所有输出
    - service: 
        name: httpd
        state: stopped
      when: load.stdout|float >  0.09     ---------> 判断标准输出的值是否大于阀值
    - shell: wall help
      when: load.stdout|float >  0.07

说明
load.stdout: 获取load的标准输出
|float : 调用浮点函数,将json输出转成浮点,和数值比较
执行playbook时获取负载值,达到触发值后执行对应动作

调用函数加密

[root@yaya ansible]# cat user02.yml  
---
- hosts: web
  remote_user: root
  tasks:
    - user:
        name: z3
        password: "{{'123'|password_hash('sha512')}}"

说明
在使用user的模块时,密码字串会以明文的方式写入到密码文件,因而必须要调用函数进行sha512加密

复杂的数据结构应用,循环

[root@yaya ansible]# cat user03.yml  
---
- hosts: db
  remote_user: root
  tasks:
    - user:
        name: "{{item.username}}"
        group: "{{item.group}}"
        password: "{{item.password|password_hash('sha512')}}"
      with_items:
        - 
          username: nb
          password: bn
          group: users
        - 
          username: wk
          password: kw
          group: man 
        - 
          username: dd
          password: dd
          group: daemon
        - 
          username: jj
          password: 123qqq...A
          group: mysql
        - 
          username: xx
          password: oo
          group: root

说明
ansible的文件格式:YAML数据的高级应用
with_items: 循环标签
效果:
可以使得不同的用户赋予个性化的设定

未完待续…

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值