Ansible核心组件playbook

Ansible核心功能点就在于playbook,Ansible主要的工作都是在与配置管理,它在实际的工作中会大量编写和使用剧本。

【Ansible剧本】

ansible软件的playbook编写需要遵循YAML语法。

playbook安装nginx

【1.批量卸载所有的nginx】

[root@m01 ~]# ansible chaoge -m yum -a "name=nginx state=absent"
[root@m01 ~]# ansible chaoge -m shell -a "rpm -qa nginx warn=false"
192.168.178.110 | CHANGED | rc=0 >>

192.168.178.111 | CHANGED | rc=0 >>

【2.查看一个YAML文件】

[root@m01 scripts]# cat nginx.yaml -n
     1    # install nginx yaml ,by chaoge
     2    - hosts: all
     3      tasks:
     4          - name: Install nginx Package
     5            yum: name=nginx state=present
     6          - name: Copy Nginx.conf
     7            copy: src=./nginx.conf dest=/etc/nginx/nginx.conf mode=0644

【3.解释如上的playbook代码】

1.表示注释信息,可以用#,也可以用 ---  三个短横线
2.定义playbook管理的目标主机,all表示所有的主机,也可以写 主机组名
3.定义playbok所有的任务集合信息,比如该文件,定义了2个任务  ,安装nginx,拷贝nginx配置文件
4.定义了任务的名词,自定义的帮助信息
5.定义任务的具体操作,比如这里用yum模块实现nginx的安装
6.
7.第六、第七两行作用是使用copy模块,把本地当前的nginx.conf配置文件,分发给其他所有客户端机器,且授权

  

Playbook内容组成规范

 剧本&hosts部分

定义剧本的hosts部分,可以有如下多种方式,常见的有

# 方式一:定义所管理的主机IP地址
- hosts: 192.168.178.111
  tasks: 
    动作...

# 方式二:定义所管理主机的名字
- hosts: backup01
  tasks:
    动作...

# 方式三:定义管理主机
- hosts: 192.168.178.111, rsync01
  tasks:
    动作...

# 方式四:管理所有主机
- hosts: all
  tasks:
    动作...

  

剧本&tasks部分

变量形式定义task任务

字典形式定义任务

# 方式一:采用变量格式设置任务
tasks:
  - name: make sure apache is running
    service: name=https state=running
# 当传入的参数列表过长时,可以将其分割到多行
tasks:
  - name: copy ansible inventory(清单) file to client
    copy: src=/etc/ansible/hosts dest=/etc/ansible/hosts
          owner=root group=root mode=0644

# 方式二:采用字典格式设置多任务
tasks:
   - name: copy ansible inventory file to client
     copy:
         src: /etc/ansible/hosts
         dest: /etc/ansible/hosts
         owner: root
         group: root
         mode: 0644

  

YAML语法

在学习saltstack过程中,第一要点就是States编写技巧,简称SLS文件。这个文件遵循YAML语法。初学者看这玩意很容易懵逼,来,超哥拯救你学习YAML语法
json xml yaml 数据序列化格式
yaml容易被解析,应用于配置文件

salt的配置文件是yaml配置文件,不能用tab
saltstack,k8s,ansible都用的yaml格式配置文件


语法规则
    大小写敏感
    使用缩进表示层级关系   
    缩进时禁止tab键,只能空格
    缩进的空格数不重要,相同层级的元素左侧对其即可
    # 表示注释行
yaml支持的数据结构
    对象: 键值对,也称作映射 mapping 哈希hashes 字典 dict    冒号表示 key: value   key冒号后必须有
    数组: 一组按次序排列的值,又称为序列sequence 列表list     短横线  - list1
    纯量: 单个不可再分的值

对象:键值对
yaml
    first_key:
      second_key:second_value

python
    {
        'first_key':{
            'second_key':'second_value',
        }
    }

  

playbook执行命令

【执行命令】

ansible-playboook nginx.yaml

【查看剧本执行详细输出】

ansible-playbook nginx.yml --verbose

【查看剧本执行影响的主机列表】

ansible-playbook nginx.yml --list-hosts

【执行playbook指定加载的主机清单文件】

ansible-playbook nginx.yml -i /etc/ansible/hosts

【执行playbook时检查剧本语法】

ansible-playbook nginx.yml --syntax-check

【调试playbook任务,模拟执行,不影响主机配置】

ansible-playbook nginx.yml -C

  

playbook的输出信息

Playbook实践与Rsync、

举例一键创建rsync服务的过程:

[root@m01 myyaml]# cat  install_rsync.yaml
- hosts: 192.168.178.115
  tasks:
    - name: step01,install rsync service
      yum: name=rsync state=installed

    - name: step02,edit rsync conf file
      copy: src=/etc/ansible/rsync_conf/rsyncd.conf dest=/etc/rsync/conf/

    - name: step03,create user rsync
      user: name=rsync state=present  createhome=no shell=/sbin/nolgoin

    - name: step04,create user auth file
      copy: src=/etc/ansible/rsync_conf/rsync.password dest=/etc/rsync/conf/ mode=0600

    - name: step05,create backup dir
      file: dest=/data_backup/  state=directory owner=rsync group=rsync

    - name: step06,run rsync server
      shell: rsync --daemon creates=/var/run/rsync.pid

  

playbook 扩展

http://book.luffycity.com/linux-book/%E9%AB%98%E6%80%A7%E8%83%BDWeb%E9%9B%86%E7%BE%A4%E5%AE%9E%E6%88%98/Ansible%E5%89%A7%E6%9C%AC.html#playbook%E6%89%A9%E5%B1%95%E9%85%8D%E7%BD%AE

  

原文地址:https://www.cnblogs.com/abc1234567/p/14204533.html