【Ansible】Playbook的编写+实验


---------源码附在文末---------

前言

Playbook 是 Ansible “任务书”,它采用了 YAML 语法,学习 Ansible 以及前置配置请移步:Ansible的原理与配置

Playbook

扩展名:.yml / .yaml
格式:严格的缩进语法,两个空格(建议不用 Tab);采用键值对格式
开头:---
正文:(以 play 列表的形式定义 Playbook)
        项目:- 项目
        一个 play 下可以对应多个任务(tasks)
        键值对之间需要有空格隔开
末尾:...(一般不写)
若有任务执行失败,其后任务不再执行
每个 play 前会默认加一条任务:收集事实(Gathering Facks

最简单的 Playbook 的正文部分包括的键有:play名(name)、主机或主机组(hosts)、任务列表(tasks);
一个任务列表包括:任务名(name)、模块名、模块相关参数。
play名、任务名、列表前必须加-+空格

下面以装包为例写一个Playbook:

---
- name: install packages	# 名字随便起
  hosts: WebServers			# 这个主机(组)必须写在清单里(inventory)
  tasks:					# 任务列表,一个键对应多个值
    - name: install httpd and firewalld packages
      yum:					# yum 是一个 ansible 模块
        name:				# 这里的 name 是 yum 模块的一个参数(包名)
          - httpd			# 这里有两个包,可以以列表形式列出,也可以分别写两个任务(其他模块不一定可以如此列出)
          - firewalld
        state: latest		# yum 的参数,指定软件包的状态(最新)

查看包相关信息:ansible-doc 包名
检查Playbook语法:ansible-playbook 文件名.yml --syntax-check
空执行:ansible-playbook 文件名.yml -C / ansible-playbook 文件名.yml -check
执行Playbook:ansible-playbook 文件名.yml

实验

任务:
web主机组 写一个 Playbook,该 Playbook 有两个 play,第一个 play 可以保证在 web主机组 上安装 httpdphp,确保 web主机组/var/www/html/ 目录下面有一个文件为 index.php,内容显示 phpinfo 界面;
该 Playbook 里面的第二个 play 用于测试该 web 主机组的 web 服务能否被成功访问 index.php 内容。

  1. 环境配置
    前置环境配置在 Ansible的原理与配置 有详细描述,包括 IP 、DNS 解析、免密SSH、免密sudo等
    本文只对清单、配置文件、Playbook做以详细描述
    以 class 的身份创建工作目录:mkdir /home/class/web
    在这里插入图片描述
  2. 编写清单:vim inventory
    在这里插入图片描述
  3. 编写配置文件:vim ansible.cfg
    在这里插入图片描述
  4. 编写 Playbook:vim web.yml(文件名随便起)
    在这里插入图片描述
    文末的 ~ 是 vim 特色,表示空行,与 Playbook 无关
    httpd 服务需要重启(restarted)而不是开启(started),因为每次修改完服务配置后需要重启,新增能加的 PHP 配置即应如此。started 不能达到重启的效果
  5. 检查语法:ansible-playbook web.yml --syntax-check
    在这里插入图片描述
    执行:ansible-playbook web.yml
    在这里插入图片描述
    可以用命令行来访问一下:curl node12
    在这里插入图片描述
    在这里插入图片描述

源码

Ansible清单:

master

[web]
node12
node13

Ansible配置文件:

[defaults]
inventory=./inventory
remote_user=student
ask_pass=false

[privilege_escalation]
become=true
become_method=sudo
become_user=root
become_ask_pass=false

Playbook:

---
# The first play
- name: Build a Web site
  hosts: web
  tasks:
    - name: Install the httpd php package
      yum:
        name:
          - httpd
          - php
        state: latest
    - name: Create an index.php page
      copy:
        content: "<?php\nphpinfo();\n"
        dest: /var/www/html/index.php
    - name: Delete the index.html page
      file:
        path: /var/www/html/index.html
        state: absent
    - name: Add a firewall rule
      firewalld:
        service: http
        state: enabled
        permanent: true
        immediate: true
    - name: Restart on the httpd service
      service:
        name: httpd
        state: restarted
        enabled: yes

# The second play
- name: URL testing
  hosts: master
  tasks:
    - name: Connect to node12 web server
      uri:
        url: http://node12
    - name: Connect to node13 web server
      uri:
        url: http://node13
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

1ta-chi

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值