playbook概念

       playbook由两部分组成
       1.play   指定hosts
       2.tasks  

           name:   namedesc

           ad-hoc(ansible模块名称): -a(参数)

playbook和ad-hoc的区别

      1.playbook是对ad-hoc的一种编排方式
      2.playbook可以持久运行,而ad-hoc只能临时运行
      3.playbook适合复杂任务,ad-hoc适合快速简单任务
      4.playbook能控制任务执行的先后顺序

      

ansible playbook 执行解压 ansible playbook template_jar

    ansible-playbook http.yml -i /home/admin/hosts

playbook部署jboss

        su - jboss -c "LAUNCH_JBOSS_IN_BACKGROUND=1 JBOSS_PIDFILE=/var/run/jboss-as/jboss-as-standalone.pid /usr/share/jboss-as/bin/standalone.sh -c standalone.xml"


        

ansible playbook 执行解压 ansible playbook template_IP_02

        mv jboss-modules-1.1.5.GA.jar jboss-modules.jar

      

ansible playbook 执行解压 ansible playbook template_ansible_03

              

ansible playbook 执行解压 ansible playbook template_jar_04

      

ansible playbook 执行解压 ansible playbook template_IP_05

  ansible语法

      handlers
       Handlers 也是一些 task 的列表,通过名字来引用,它们和一般的 task 并没有什么区别.Handlers 是由通知者进行 notify, 如果没有被 notify,handlers 不会执行.不管有多少个通知者进行了 notify,等到 play 中的所有 task 执行完成之后,handlers 也只会被执行一次

       Handlers最佳的应用场景是用来重启服务,或者触发系统重启操作.除此以外很少用到了
       handlers会按照声明的顺序执行

       tags是一种实现部分运行playbook的机制
       在一个大型的playbook,那能够只运行其中特定部分的配置而无需运行整个playbook 将会很有用.

       register

         

ansible playbook 执行解压 ansible playbook template_IP_06

        重新配置整个基础设施
              ansible-playbook -i production site.yml

        只重新配置基础设施中的所有的NTP
             ansible-playbook -i production site.yml --tags ntp

       只重新配置我的Web服务器 有单独的角色执行文件
             ansible-playbook -i production webservers.yml

ansible变量的三种方式

     1.引用变量的格式      {{ var }}.tar.gz

     2.变量的指定方式
       1.通过playbook文件中的play进行变量定义
          定义变量 通过vars关键字进行定义
          vars:
             - k1: v1
            - k2: v2
        指定vars_files
        通过关键字vars_files关键字指定统一变量文件

          

ansible playbook 执行解压 ansible playbook template_jar_07

           

ansible playbook 执行解压 ansible playbook template_ansible_08

      2.通过inventory主机清单进行变量定义

         

ansible playbook 执行解压 ansible playbook template_jar_09

         hosts_vars
         group_vars
     3.通过执行playbook时使用-e参数指定变量
         ansible-playbook -i hosts -e "hosts=webserver"

     4.group变量
        系统有一个对所有主机设置的默认组,组名是all
        默认情况下 group_vars目录中文件名和hosts清单中组名保持一致.其他组是无法使用当前组变量文件中的变量
       系统提供了一个特殊组 all,只需要在group_vars目录下创建一个all文件,编写好变量。所有组就都可以使用

     5.host变量
       在host_vars目录中创建一个文件,文件名和inventory清单中的主机名称要保持完全一致,如果是IP地址,则创建相应的IP地址文件即可.

    6.变量优先级
       命令行-e传递参数 》play vars_files定义变量 》play vars定义变量 》hosts_vars主机文件变量 》 group_vars主机组变量 》 group_vars下面默认all组

ansible变量注册

         register关键词把当前任务的执行结果存储在变量中.结果参数可以用在模版中,动作条目,或者 when语句  

         rc 是执行shell命令返回的结果.0是执行成功,其他数字都表示执行失败

        ansible facts变量
           从客户端主机获取相关变量,用来采集被控端指标状态.比如IP地址 cpu信息 内存信息.
           Task Gathering Facts 就是在收集所有节点的facts变量 所以在执行这个任务的时候会有点耗时.
           默认情况下的facts变量名称都已经被定义好了,只需要采集被控端主机信息,然后把相关值传递给fact变量名称即可.

           根据被控端不同的硬件配置动态生成不同的应用配置文件 facts变量和template模块 在模板配置文件中使用 {{ var }}来动态修改应用的配置

        

ansible playbook 执行解压 ansible playbook template_IP_10

       

ansible playbook 执行解压 ansible playbook template_重启_11