zoukankan      html  css  js  c++  java
  • 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
    

      

  • 相关阅读:
    中国用户mac上快速安装nodejs
    移动前端的开发痛点
    前端模块化思考
    tcpdump学习
    curl 同时发送多个请求
    apache 做http代理
    文件 FIFO队列
    mysql多表字段名重复的情况
    时间戳实现增量数据同步
    python 学习
  • 原文地址:https://www.cnblogs.com/abc1234567/p/14204533.html
Copyright © 2011-2022 走看看