RHCE-B3. 创建playbook安装 php 和 mariadb 软件包到指定主机组

Posted 白-胖-子

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了RHCE-B3. 创建playbook安装 php 和 mariadb 软件包到指定主机组相关的知识,希望对你有一定的参考价值。

红帽RHCE考试下午-RHCE(RH294)

RH294任务概览

  • 考试时间4个小时,6台虚拟机,15道题
  • 原来通过脚本或者集群做的题现在都需要使用playbook实现
  • 考试时大概有6台虚拟服务器,都已经做好了互相的免密
  • 做题在ansible控制节点workstation做,但是需要去其他虚拟服务器进行验证
  • 考试时需要将6台虚拟服务器在考试环境全部开启,物理机界面点击左侧按钮启动
  • 考试时Ansible所有playbook都放在普通用户目录中且都以普通用户执行
  1. 注意:考试时一定注意要求将playbook放在指定用户的家目录中,用指定的用户登录做题!
  2. 注意:考试的判分方式通过普通用户远程执行指定目录下的playbook或者脚本,如果使用root做题,则没有权限就是零分

3. 安装 php 和 mariadb 软件包到指定主机组

  • 创建一个名为 /home/student/ansible/packages.yml 的 playbook:

任务要求

  1. 将 php 和 mariadb 软件包安装到 dev、test 和 prod 主机组中的主机上
  2. 将RPM Development Tools 软件包组安装到 dev 主机组中的主机上
  3. 将 dev 主机组中主机上的所有软件包更新为最新版本
    注意:

准备个工作

  • 考试期间不需要做
- name:#后边的名字可以不写,相当于任务play的注释
## 但是模块内的name后边的内容必须要写

完成步骤

  • 使用列表的方式安装
  • 第二个tasks是安装软件包组需要整起来,要在软件包组前加@证明是软件包组
    “@Development Tools”
[student@workstation ansible]$ vim packages.yml
---
- name: install pkgs 
  hosts: dev,test,prod 
  tasks:
    - name: install php mariadb
      yum:
        name:
          - php
          - mariadb 
        state: present
- name: install group pkgs 
  hosts: dev
  tasks:
    - name: install Development Tools 
      yum:
        name: "@Development Tools"
        state: present
- name: update pkgs
  hosts: dev 
  tasks:
    - name: update pkgs
      yum:
        name: '*' 
        state: latest
[student@workstation ansible]$ ansible-playbook packages.yml

注意:安装软件的过程可能很慢,可以再开一个终端继续往下做题!

考察的知识点

ansible Plyabook

  • playbook 剧本是由一个或多个"play"组成的列表
  • play的主要功能在于将预定义的一组主机,装扮成事先通过ansible中的task定义好的角色。
  • Task实际是调用ansible的一个module,将多个play组织在一个playbook中,即可以让它们联合起来,按事先编排的机制执行预定义的动作
  • Playbook 文件是采用YAML语言编写的

YAML语法简介

  • 在单一文件第一行,用连续三个连字号"-" 开始,还有选择性的连续三个点号( … )用来表示文件的结尾
  • 次行开始正常写Playbook的内容,一般建议写明该Playbook的功能使用#号注释代码
  • 缩进必须是统一的,不能空格和tab混用
  • 缩进的级别也必须是一致的,同样的缩进代表同样的级别,程序判别配置的级别是通过缩进结合换行来实现的
  • YAML文件内容是区别大小写的,key/value的值均需大小写敏感
  • 多个key/value可同行写也可换行写,同行使用,分隔
  • key后面冒号要加一个空格 比如: key: value
  • value可是个字符串,也可是另一个列表
  • YAML文件扩展名通常为yml或yaml

YAML Dictionary 字典

  • 字典由多个key与value构成,key和value之间用 :分隔, 并且 : 后面有一个空格,
  • 所有k/v可以放在一行,或者每个 k/v 分别放在不同行
#不同行
# An employee record
account:
    name: Example Developer
    job: Developer
    skill: Elite(社会精英)
#同一行,也可以将key:value放置于{}中进行表示,用,分隔多个key:value
# An employee record
account: {name: "Example Developer", job: "Developer", skill: "Elite"}

YAML List 列表

  • 列表由多个元素组成,每个元素放在不同行,且元素前均使用"-"打头,并且 - 后有一个空格,
  • 或者将所有元素用 [ ] 括起来放在同一行
#不同行,行以-开头,后面有一个空格
# A list of tasty fruits
Fruits:
    - Apple
    - Orange
    - Strawberry
    - Mango
#同一行
Fruits: [Apple,Orange,Strawberry,Mango]
#列表的数据中也可以包括字典
Fruits:
    - Apple: Red
    - Orange: Orange
    - Strawberry: Green
    - Mango: Yellow

Playbook 核心组件

  • 一个playbook 中由多个组件组成,其中所用到的常见组件类型如下:
  • Hosts 执行的远程主机列表
  • Tasks 任务集,由多个task的元素组成的列表实现,每个task是一个字典,一个完整的代码块功能需最少元素需包括 name 和 task,一个name只能包括一个task
  • Variables 内置变量或自定义变量在playbook中调用
  • Templates 模板,可替换模板文件中的变量并实现一些简单逻辑的文件
  • Handlers 和 notify 结合使用,由特定条件触发的操作,满足条件方才执行,否则不执行
  • tags 标签 指定某条任务执行,用于选择运行playbook中的部分代码。ansible具有幂等性,因此会自动跳过没有变化的部分,即便如此,有些代码为测试其确实没有发生变化的时间依然会非常地长。
    此时,如果确信其没有变化,就可以通过tags跳过此些代码片断

Yum 和 Apt 模块

  • yum 管理软件包,只支持RHEL,CentOS,fedora,不支持Ubuntu其它版本
  • apt 模块管理 Debian 和Ubuntu相关版本的软件包
ansible websrvs -m yum -a 'name=httpd state=present' #安装
ansible websrvs -m yum -a 'name=nginx state=present enablerepo=epel' #启用epel源进行安装
ansible websrvs -m yum -a 'name=* state=lastest exclude=kernel*,foo*' #升级除kernel和foo开头以外的所有包
ansible websrvs -m yum -a 'name=httpd state=absent' #删除
[root@ansible ~]#ansible websrvs -m yum -a 'name=sl,cowsay'
- name: install the latest version of Apache
  yum:
    name: httpd
    state: latest

- name: ensure a list of packages installed
  yum:
    name: "{{ packages }}"
  vars:
    packages:
    - httpd
    - httpd-tools

- name: remove the Apache package
  yum:
    name: httpd
    state: absent

- name: install the latest version of Apache from the testing repo
  yum:
    name: httpd
    enablerepo: testing
    state: present
- name: install one specific version of Apache
  yum:
    name: httpd-2.2.29-1.4.amzn1
    state: present

- name: upgrade all packages
  yum:
    name: '*'
    state: latest

- name: upgrade all packages, excluding kernel & foo related packages
  yum:
    name: '*'
    state: latest
    exclude: kernel*,foo*

- name: install the nginx rpm from a remote repo
  yum:
    name: http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm
    state: present

- name: install nginx rpm from a local file
  yum:
    name: /usr/local/src/nginx-release-centos-6-0.el6.ngx.noarch.rpm
    state: present

- name: install the 'Development tools' package group
  yum:
    name: "@Development tools"
    state: present

注:yum模块内容有老多了,不会可以看帮助

以上是关于RHCE-B3. 创建playbook安装 php 和 mariadb 软件包到指定主机组的主要内容,如果未能解决你的问题,请参考以下文章

RHCE-B16.编写playbook创建cron计划任务

RHCE-B11. 利用playbook创建 Web 内容目录并能够访问

RHCE-B11. 利用playbook创建 Web 内容目录并能够访问

RHCE-B8. 利用playbook在指定主机组创建和使用逻辑卷

RHCE-B8. 利用playbook在指定主机组创建和使用逻辑卷

RHCE-B12. 利用playbook生成所有清单主机指定硬件信息报告