ansible使用playbook部署nginx(编译)
首先要定义ansible所管理的主机有那些,这里就简单定义两台主机
vim /etc/ansible/hosts
定义主机可以使用ip也可以使用主机名,使用主机名时,要注意编写host或者有dns服务都可
vim /etc/hosts
192.168.3.34 nodea
192.168.3.36 nodec
192.168.3.37 control
准备工作写完,就可以进入正题了,开始编写playbook。(要注意,playbook的格式为.yml结尾)
[root@control ~]# vim nginxinstall.yml
---
- hosts: nodec
tasks:
- name: download nginx
get_url: url="http://nginx.org/download/nginx-1.18.0.tar.gz" dest=/tmp #下载nginx到/tmp目录下
- name: gcc
yum:
name: "{{ packages }}" #安装编译环境所需求的包
vars:
packages:
- openssl-devel
- pcre-devel
- gcc
- name: tarnginx
shell: cd /tmp;tar -xf nginx-1.18.0.tar.gz ##解压nginx包
- name: create nginx #创建nginx用户
user: name=nginx state=present
- name: install nginx #编译安装nginx
shell: cd /tmp/nginx-1.18.0;./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module && make && make install
编写完保存退出后,执行
[root@control ~]# ansible-playbook nginxinstall.yml -C
ansible-playbook用于运行剧本,-C测试运行结果,并不是真的执行任务
PLAY [nodec] **********************************************************************************************
TASK [Gathering Facts] ************************************************************************************
ok: [nodec]
TASK [download nginx] *************************************************************************************
changed: [nodec]
TASK [gcc] ************************************************************************************************
ok: [nodec]
TASK [tarnginx] *******************************************************************************************
skipping: [nodec]
TASK [create nginx] ***************************************************************************************
ok: [nodec]
TASK [install nginx] **************************************************************************************
skipping: [nodec]
PLAY RECAP ************************************************************************************************
nodec : ok=4 changed=1 unreachable=0 failed=0 skipped=2 rescued=0 ignored=0
上述为测试结果,检查playbook是否能成功执行,之后去掉-C直接运行playbook就可以自动化的安装nginx了
[root@control ~]# ansible-playbook nginxinstall.yml
PLAY [nodec] **********************************************************************************************
TASK [Gathering Facts] ************************************************************************************
ok: [nodec]
TASK [download nginx] *************************************************************************************
ok: [nodec]
TASK [gcc] ************************************************************************************************
ok: [nodec]
TASK [tarnginx] *******************************************************************************************
changed: [nodec]
TASK [create nginx] ***************************************************************************************
ok: [nodec]
TASK [install nginx] **************************************************************************************
changed: [nodec]
PLAY RECAP ************************************************************************************************
nodec : ok=6 changed=2 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
成功