zoukankan      html  css  js  c++  java
  • Ansible学习记录五:PlayBook学习

    0.介绍

         Playbooks 是 Ansible 管理配置、部署应用和编排的语言,可以使用 Playbooks 来描述你想在远程主机执行的策略或者执行的一组步骤过程等

         类似于一组任务集,定义好像项目,组织结构,配置文件等信息,通过task将所要做的事情一步一步的组织在一起就是完整的Playbook

      官方Demo资料:https://github.com/ansible/ansible-examples

      Playbooks是采用YMAL语言结构,基础语法请参考:http://docs.ansible.com/ansible/YAMLSyntax.html

      一个完整的Playbooks结构,以部署tomcat为例:

        tomcat/   ------>  tomcat的playbook

        ├── hosts    -------->    指定安装tomcat的机器清单(Inventory)

        ├── roles    ------>  子项清单 (可以有一项或多项的任务)

        │   └── tomcat    ----> 安装tomcat

        │       ├── files   ---> 存放文件

        │       │   ├── apache-tomcat-7.0.64.tar.gz    ----> tomcat安装包

        │       │   ├── jdk-7u79-linux-x64.tar.gz     -----> jdk安装包

        │       │   └── tomcat    ------>tomcat服务启动脚本

        │       └── tasks   ------>任务项清单

        │           ├── jdk.yml     ---> jdk任务列表

        │           ├── main.yml    --->  任务入口

        │           └── tomcat.yml    ---->tomcat任务列表

        ├── site.yml    ansible playbook执行入口

        ├── tomcat.sh   批量安装shell.

        └── tomcat-testing.sh   tomcat安装测试脚本

      Ansible roles 完整示例:

        root@node1 playbook]# tree  roles/

        roles/ \ansible所有的信息都放到此目录下面对应的目录中

        └── nginx  \角色名称

            ├── default  \为当前角色设定默认变量时使用此目录,应当包含一个main.yml文件

            ├── files  \存放有copy或script等模块调用的文件

            ├── handlers \此目录总应当包含一个main.yml文件,用于定义各角色用到的各handler

            ├── meta \应当包含一个main.yml,用于定义角色的特殊设定及其依赖关系;1.3及以后版本支持

            ├── tasks \至少包含一个名为main.yml的文件,定义了此角色的任务列表,可使用include指令

            ├── templates \template模块会自动在此目录中寻找Jinja2模板文件

            └── vars  \应当包含一个main.yml文件,用于定义此角色用到的变量

    1.项目结构介绍

      Playbook中的属性介绍:

        name    表示playbook 的名称

        hosts    表示执行的机器清单

        connection:允许你指定ssh parmiko或者local这三种传输方式

        gather_facts:默认每次连接都会执行setup,如果不需要用到变量可以制定这个字段为now

        remote_user :  远程端执行的用户

        tasks:   定义执行的任务清单,顺序执行

        templates :  存放模板文件

        vars:  存放变量

        handlers:  定义以后回调的方法

        file: 存放复制的安装文件,比如安装文件等

    2.PlayBook示例

      安装ftp服务:

      ---

          - hosts: test

            remote_user: root

            tasks:

             - name: install ftp

               command: yum -y install ftp

    3.其他

      3.1 首次连接或者重装系统之后会出现检查 keys 的提示

        The authenticity ofhost '192.168.0.5 (192.168.0.5)' can't be established.

        ECDSA key fingerprint is 05:51:e5:c4:d4:66:9b:af:5b:c9:ba:e9:e6:a4:2b:fe.

        Are you sure you want to continue connecting (yes/no)?

      解决办法:

        vim /etc/ansible/ansible.cfg 或者 ~/.ansible.cfg

        [defaults]

        host_key_checking = False

        也可以通过设置系统环境变量来禁止这样的提示

        export ANSIBLE_HOST_KEY_CHECKING=False

      3.2 在使用 paramiko 模式时,主机 keys 的检查会很慢

      3.3 默认情况下 Ansible 会记录一些模块的参数等信息到每个被控端的 syslog 日志文件里,除非在任务或者剧本里设置了 no_log: True 会不记录日志

     4.参考记录

          Ansible-Playbook

      http://www.178linux.com/7001

        集群运维ansible的playbook配置及template模板的使用

      http://www.tuicool.com/articles/UvU3ai

      http://rfyiamcool.blog.51cto.com/1030776/1413031

      Playbook Roles and Include Statements

      http://docs.ansible.com/ansible/playbooks_roles.html

  • 相关阅读:
    C#中结构与类的区别
    LINQ中的聚合操作以及常用方法
    慎用const关键字
    .NET Framework想要实现的功能
    System.Object的一些方法
    你真的了解.NET中的String吗?
    C#学习要点一
    2012年 新的开始!
    java web服务器中的 request和response
    java Thread编程(二)sleep的使用
  • 原文地址:https://www.cnblogs.com/LuisYang/p/6004702.html
Copyright © 2011-2022 走看看