剧本--ansible

剧本不喜欢,

1.1 编写剧本规范:(PYyaml语法格式文件)

     剧本中有层级划分

        每个层级都要用两个空格进行区分

        第一级标题

          第二级标题

            第三级标题

        强调注意:一定使用ansible软件配置剧本时,就忘记键盘上有tab按键

       

     属于冒号应用规则

        冒号 等价于  shell中变量后面的 =

        hosts:空格172.16.1.31

        注释说明中的冒号不用空格,以冒号结尾的信息,不用加空格

    

短横线用法规则

        一级标题

          二级标题

          -空格二级标题中重点信息

          -空格二级标题中重点信息

   

    剧本编写方式

    01 多主机单任务编写方式

    02 多主机多任务编写方式

   

    rsync服务端主机

    01. 进行yum安装

    02. 编写配置文件

    03. 创建用户

    04. 创建备份目录并授权

    05. 创建秘钥文件,并授权

    06. 启动服务

   

    rsync客户端主机

    01. 进行yum安装

    02. 创建秘钥文件,并授权

    03 不同主机多任务编写方式

   

    ansible-playbook --syntax-check /etc/ansible/ansible-playbook/test.yaml  语法检查方法

    ansible-playbook -C /etc/ansible/ansible-playbook/test.yaml              进行模拟执行

   

作业:编写ansible剧本

01. 编写nfs一键化部署剧本

02. 编写实时同步服务一键化部署剧本   

    

1.2   ansible剧本编写规则说明

    pyYAML语法规则:

       规则一:缩进

    yaml使用一个固定的缩进风格表示数据层结构关系,Saltstack需要每个缩进级别由两个空格组成。一定不能使用tab键

    规则二:冒号

    CMD="echo"

    yaml:

    mykey:

    每个冒号后面一定要有一个空格(以冒号结尾不需要空格,表示文件路径的模版可以不需要空格)

    规则三:短横线

    想要表示列表项,使用一个短横杠加一个空格。多个项使用同样的缩进级别作为同一个列表的一部分

    核心规则:有效的利用空格进行剧本的编写,剧本编写是不支持tab的

      

    ---

    ### 剧本的开头,可以不写

    - hosts: all         <- 处理所有服务器,找到所有服务器;  -(空格)hosts:(空格)all

      task:              <- 剧本所要干的事情;                (空格)(空格)task:

        - command: echo hello oldboy linux.                  (空格)(空格)空格)(空格)-(空格)模块名称:(空格)模块中对应的功能

             

    剧本编写内容扩展:剧本任务定义名称

       - hosts: 172.16.1.7  <- 处理指定服务器                   -(空格)hosts:(空格)all

         task:                <- 剧本所要干的事情;                (空格)(空格)task:

           - name:

          command: echo hello oldboy linux.                  (空格)(空格)空格)(空格)-(空格)模块名称:(空格)模块中对应的功能

    剧本编写内容扩展:剧本任务编写定时任务

       # ansible all -m cron -a "name='restart network' minute=00 hour=00 job='/usr/sbin/ntpdate time.nist.gov >/dev/null 2>&1'"

       - hosts: all

      tasks:

        - name: restart-network

          cron: name='restart network' minute=00 hour=00 job='/usr/sbin/ntpdate time.nist.gov >/dev/null 2>&1'

    # ansible-playbook -C /etc/ansible/network-restart.yml  -vvvx

       说明:测试剧本命令后面可以跟多个-v进行调试检查

      

       剧本编写内容扩展:剧本任务编写多个任务

       - hosts: all

      tasks:

        - name: restart-network

          cron: name='restart network' minute=00 hour=00 job='/usr/sbin/ntpdate time.nist.gov >/dev/null 2>&1'

        - name: sync time

          cron: name='sync time' minute=*/5 job="/usr/sbin/ntpdate pool.ntp.com >/dev/null 2>&1"

      

       剧本编写内容扩展:剧本任务编写多个主机

       - hosts: 172.16.1.7

      tasks:

        - name: restart-network

          cron: name='restart network' minute=00 hour=00 job='/usr/sbin/ntpdate time.nist.gov >/dev/null 2>&1'

        - name: sync time

          cron: name='sync time' minute=*/5 job="/usr/sbin/ntpdate pool.ntp.com >/dev/null 2>&1"

       - hosts: 172.16.1.31

      tasks:

        - name: show ip addr to file

          shell: echo $(hostname -i) >> /tmp/ip.txt

    **************************************************************************************

       扩展知识说明:vim编辑器使用说明

       01:复制当前行到最后一行的内容,然后粘贴到最后一行的后面

           :/172.16.1.31/,$copy$

              :.,$copy$

     **************************************************************************************

原文地址:https://www.cnblogs.com/zdqc/p/9435698.html