ansible小练习【2】

本文档详述了如何使用Ansible进行自动化配置,包括创建ansible.cfg配置文件,定义inventory清单,以及编写多剧本实现软件安装、服务配置和web服务测试。通过packages.yml剧本在dev, prod和test主机组安装PHP和MariaDB,升级dev组的软件包。另外,internet.yml剧本在serverb上部署web服务,确保服务运行并测试HTTP响应状态。

配置ansible配置文件

[devops@workstation ~]$ cd ansible		//切换至ansible目录
[devops@workstation ansible]$ vim ansible.cfg 		//创建并配置清单文件
[devops@workstation ansible]$ cat ansible.cfg 
[defaults]
inventory = /home/devops/ansible/inventory
roles_path = /home/devops/ansible/roles
host_key_checking = False
vault_password_file = /home/devops/ansible/secret.txt

[privilege_escalation]
become = True
become_method = sudo
become_user = root
become_ask_pass = False

配置清单文件

[devops@workstation ansible]$ vim inventory 	//创建并配置清单文件
[devops@workstation ansible]$ cat inventory 
[dev]
servera

[test]
serverb

[balances]
serverb

[prod]
server[c:d]

[Webserver:children]
prod

[all:vars]
ansible_user = root
ansible_password = redhat

练习要求

1、安装软件

- 创建一个名为/home/devops/ansible/packages.yml的剧本
- 在dev, prod 和 test 主机组中安装 php 和 mariadb 软件包
- 在dev 主机组中安装 Development Tools 包组
- 升级dev主机组中主机的所有软件包

2、多剧本练习

- 新建一个playbook,/home/devops/ansible/internet.yml
- 第一个剧本名为Enable internet services,受管主机为serverb.lab.example.com
- 安装软件firewalld、httpd、mariadb-server、php和php-mysqlnd的最新版。
- 确保服务firewalld服务处于enabled和running状态,并允许访问httpd服务。
- 确保httpd和Maria服务处于enabled和running状态。
- web主页index.php内容为
<?php
echo "Hello Ansible!";
?>
- 第二个剧本名为 Test internet web server
- 利用uri模块从控制节点测试serverb上运行web服务,检查返回状态代码200.
- 验证internet.yml playbook的语法。
- 使用ansible-playbook 运行剧本。

实操

1)练习【1】

[devops@workstation ansible]$ vim packages.yml		//创建并编写剧本
[devops@workstation ansible]$ cat packages.yml 
//通过多剧本的方式进行编写
---
- name: playbook1		//剧本1
  hosts: dev,prod,test		//设定范围为“dev、prod、test”主机组
  tasks: 
    - name: install software	//安装软件包(PHP、mariadb)
      yum: 
        name: 
          - php
          - mariadb

- name: playbook2		//剧本2
  hosts: dev		//设定范围为“dev”主机组
  tasks: 
    - name: install the 'Development tools' package group       //安装Development Tools 包组(复制帮助文档)
      yum:
        name: "@Development tools"
        state: present

- name: playbook3		//剧本3
  hosts: dev		//设定范围为“dev”主机组
  tasks: 
    - name: upgrade all packages        //更新所有软件包(复制帮助文档)
      yum:
        name: '*'
        state: latest

[devops@workstation ansible]$ ansible-playbook packages.yml --syntax-check
//检验剧本语法

playbook: packages.yml

[devops@workstation ansible]$ ansible-playbook packages.yml 	//执行剧本

PLAY [playbook1] **********************************************************************************************************************************************************

TASK [Gathering Facts] ****************************************************************************************************************************************************
ok: [serverd]
ok: [servera]
ok: [serverb]
ok: [serverc]

TASK [install software] ***************************************************************************************************************************************************
changed: [serverd]
changed: [serverc]
changed: [servera]
changed: [serverb]

PLAY [playbook2] **********************************************************************************************************************************************************

TASK [Gathering Facts] ****************************************************************************************************************************************************
ok: [servera]

TASK [install the 'Development tools' package group] **********************************************************************************************************************
changed: [servera]

PLAY [playbook3] **********************************************************************************************************************************************************

TASK [Gathering Facts] ****************************************************************************************************************************************************
ok: [servera]

TASK [upgrade all packages] ***********************************************************************************************************************************************
ok: [servera]

PLAY RECAP ****************************************************************************************************************************************************************
servera                    : ok=6    changed=2    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   
serverb                    : ok=2    changed=1    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   
serverc                    : ok=2    changed=1    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   
serverd                    : ok=2    changed=1    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   

1)练习【2】

[devops@workstation ansible]$ mkdir files		//根据题意创建files目录(主页路径)
[devops@workstation ansible]$ cd files/		//切换至files目录
[devops@workstation files]$ pwd		//查看目录路径
/home/devops/ansible/files
[devops@workstation files]$ vim index.php 		//创建并编写网站主页文件
[devops@workstation files]$ cat index.php 
<?php
echo "Hello Ansible!";
?>

[devops@workstation ansible]$ vim internet.yml		//创建并编写剧本
[devops@workstation ansible]$ cat internet.yml 
//通过多剧本的方式进行编写
---
- name: Enable internet services		//剧本1(启动internet相关服务)
  hosts: serverb
  tasks: 
    - name: install software		//安装internet相关软件包
      yum: 
        name: 
          - firewalld
          - httpd
          - mariadb-server
          - php
          - php-mysqlnd
        state: latest   	//设定安装最新版本的软件包

    - name: start firewall		//启动serverb的防火墙服务
      service:
        name: firewalld
        state: started
        enabled: yes

    - name: firewall rule		//配置serverb的防火墙(放行http服务)
      firewalld:
        service: http
        state: enabled		//设定防火墙开机自启
        permanent: yes		//设定防火墙永久启动
        immediate: yes		//立即启动防火墙(无需重启)

    - name: start httpd		//启动http服务
      service:
        name: httpd
        state: started
        enabled: yes

    - name: index.php
      copy: 	//将index.php文件复制到指定目录
        src: files/index.php	//文件所在地为于当前files目录下,名为index.php
        dest: /var/www/html/index.php

- name: Test internet web server		//剧本2(测试internet站点是否创建成功)
  hosts: localhost
  tasks: 
    - name: test web server
      uri: 
        url: http://serverb/index.php
        return_content: yes		//启用返回值
        status_code: 200	//返回值200

[devops@workstation ansible]$ ansible-playbook internet.yml --syntax-check
//检验剧本语法

playbook: internet.yml

[devops@workstation ansible]$ ansible-playbook internet.yml 	//执行剧本

PLAY [Enable internet services] *******************************************************************************************************************************************

TASK [Gathering Facts] ****************************************************************************************************************************************************
ok: [serverb]

TASK [install software] ***************************************************************************************************************************************************
ok: [serverb]

TASK [start firewall] *****************************************************************************************************************************************************
ok: [serverb]

TASK [firewall rule] ******************************************************************************************************************************************************
ok: [serverb]

TASK [start httpd] ********************************************************************************************************************************************************
ok: [serverb]

TASK [index.php] **********************************************************************************************************************************************************
changed: [serverb]

PLAY [Test internet web server] *******************************************************************************************************************************************

TASK [Gathering Facts] ****************************************************************************************************************************************************
ok: [localhost]

TASK [test web server] ****************************************************************************************************************************************************
ok: [localhost]

PLAY RECAP ****************************************************************************************************************************************************************
localhost                  : ok=2    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   
serverb                    : ok=6    changed=4    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   

[devops@workstation ansible]$ curl serverb		//测试访问网站
Hello Ansible!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值