• (五)Ansible-playbook


    一、YAML语言

    Ansible Palybook的编写是基于YAML语言的。YAML语言,即Yet Another Markup Language,是一种能被计算机直接识别的标记语言,同时也方便人的阅读,且方便和脚本语言交互。但是,YAML的配置即为严格,在配置时必须注重空格的数量。
    总的来看,YAML语言特性如下:

    1. .可读性强
    2. 和脚本语言的交互性好
    3. 使用实现语言的数据类型
    4. 一致的信息模型
    5. 易于实现
    6. 可以基于流来处理
    7. 可扩展性强

    二、Playbook组件

    Ansible的Playbook有以下组件:

    1. Target:定义playbook的远程主机组,即被控制端设备。
    2. Variable:定义Playbook所使用的变量。
    3. Task:定义Playbook控制下游设备要执行的命令。
    4. Handler:定义在Palybook在Task执行完毕后要调用的任务。

    三、组件参数

    1、Target常用参数

    1. hosts:定义Ansible用户控制的下游设备
    2. remote_user:定义执行Ansible设置的用户
    3. sudo:设置为yes时,执行任务时使用root权限
    4. sudo_user:指定sudo的普通用户
    5. connection:默认基于ssh链接客户端
    6. gather_facts:获取远程主机facts基础信息

    2、Variable常用参数

    1. vars:定义变量
    2. vars_files:指定变量文件
    3. vars_prompt:用户交互模式自定义变量
    4. setup:通过远程gather_facts获取的信息

    3、Task常用参数

    1. name:任务的名称,在Ansible运行的过程中起到提示的作用,会打印在屏幕上
    2. action:Ansible控制下游设备的命令,通过Ansible的各个模块来进行控制
    3. template:Ansible控制下游设备的模板
    4. handler:定义一个调用,该调用在Handler处被定义,在所有的Task结束后被执行

    4、简单示例

    1. 编辑csdn.yml,该playbook主要用于centos通过yum安装httpd并且启动httpd服务。
    ---
    - hosts: user_passwd
      remote_user: root
      tasks:
      - name: Install Httpd by YUM
        yum: name=httpd state=installed
      - name: Start Httpd
        service: name=httpd state=started
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    1. 格式说明
    • 行号1:开头用三个短杠,这是Ansible Playbook的标准开头格式。
    • 行号2:以一个短杠开头,后面跟一个空格。这个空格有且仅有一个。hosts参数后面紧跟着的是一个因为冒号,冒号后面也必须跟一个空格。这个空格和刚才相同,有且仅有一个。冒号后面接Ansible控制的主机。
    • 行号3:remote_user,这个参数要和hosts严格对齐! 否则,Ansible也会报错。后面的tasks任务和name前面的短杠也要对齐。
    1. 执行ansible-playbook csdn.yml:
      在这里插入图片描述

    四、变量

    1、变量示例

    ---
    - hosts: user_passwd
      remote_user: root
      tasks:
      - name: Install Httpd by YUM
        yum: name={{ csdn }} state=installed
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    变量格式:

    1. 使用两个大括号括起来。
    2. 变量名两边都有一个空格。

    2、赋值方式

    1. 命令调用赋值:使用-e参数进行变量赋值,将httpd值赋给playbook中的csdn。
      在这里插入图片描述
    2. 在hosts文件中定义变量
      查看hosts文件:
    [user_passwd]
    10.10.192.21
    [user_passwd:vars]
    csdn=httpd
    
    • 1
    • 2
    • 3
    • 4

    在这里插入图片描述
    3. playbook中定义变量

    ---
    - hosts: user_passwd
      vars:
        csdn: httpd
      remote_user: root
      tasks:
      - name: Install Httpd by YUM
        yum: name={{ csdn }} state=installed
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    在这里插入图片描述
    4. setup模块获取变量
    在这里插入图片描述
    在每次playbook的执行过程中都可以看到gathering facts的过程,这是ansible收集被控端信息的过程,ansible把被控端的一些信息收集到本地,并且以变量的形式进行保存,在编写playbook中就可以使用这些变量。

    查看通过gathering facts获取的变量信息:
    执行ansible -m setup,内容很多,仅截取部分:
    在这里插入图片描述
    示例:

    ---
    - hosts: user_passwd
      remote_user: root
      tasks:
      - name: Display vars in setup
        file: name=/root/{{ ansible_all_ipv4_addresses }} state=touch
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    查看创建的文件信息:
    在这里插入图片描述
    5. 独立的变量文件
    将变量存储成独立的变量文件,创建一个以yml结尾的变量文件,var.yml,内容如下:

    csdn: httpd
    
    • 1

    修改csdn.yml:

    ---
    - hosts: user_passwd
      remote_user: root
      vars_files:
       - ./inventory/var.yml
      tasks:
      - name: Yum install
        yum: name={{ csdn }} state=installed
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    执行结果:
    在这里插入图片描述

  • 相关阅读:
    逗号表达式
    [ 常用工具篇 ] kali 忘记 root 密码 -- 修改 root 密码
    详解使用可道云Kodbox快速在云服务器上搭建云盘
    Android平台实现系统内录(捕获播放的音频)并推送RTMP服务技术方案探究
    Deno 的配置文件、框架,标准库
    小学Python编程 ——迷宫
    【计算机网络】网络编程接口 Socket API 解读(7)
    构建应用程序的低代码思路
    机器学习——神经网络、决策树(深度学习)
    计算机竞赛 基于深度学习的植物识别算法 - cnn opencv python
  • 原文地址:https://blog.csdn.net/qq_25562325/article/details/125416223