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基础_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"

        http://repo1.maven.org/maven2/org/jboss/modules/jboss-modules/1.1.5.GA/jboss-modules-1.1.5.GA.jar

        

ansible的playbook基础_IP_02

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

      

ansible的playbook基础_IP_03

              

ansible的playbook基础_jar_04

      

ansible的playbook基础_jar_05

  ansible语法

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

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

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

       register

         

ansible的playbook基础_jar_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基础_重启_07

           

ansible的playbook基础_jar_08

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

         

ansible的playbook基础_重启_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基础_重启_10

       

ansible的playbook基础_jar_11