配置ansible配置文件
[devops@workstation ~]$ cd 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
hosts: dev,prod,test
tasks:
- name: install software
yum:
name:
- php
- mariadb
- name: playbook2
hosts: dev
tasks:
- name: install the 'Development tools' package group
yum:
name: "@Development tools"
state: present
- name: playbook3
hosts: 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
[devops@workstation ansible]$ cd 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
hosts: serverb
tasks:
- name: install software
yum:
name:
- firewalld
- httpd
- mariadb-server
- php
- php-mysqlnd
state: latest
- name: start firewall
service:
name: firewalld
state: started
enabled: yes
- name: firewall rule
firewalld:
service: http
state: enabled
permanent: yes
immediate: yes
- name: start httpd
service:
name: httpd
state: started
enabled: yes
- name: index.php
copy:
src: files/index.php
dest: /var/www/html/index.php
- name: Test internet web server
hosts: localhost
tasks:
- name: test web server
uri:
url: http://serverb/index.php
return_content: yes
status_code: 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!