Ansible playbook批量部署
要求:
通过playbook批量源码部署nginx,并实现配置文件替换,启动服务
环境:
ansible-server:192.168.146.131
ansible-client: 192.168.146.132
ansible-client: 192.168.146.134
1、定义hosts主机列表
2、创建并配置ansible-book剧本
按照此次案例剧本master-ansible内容相关路径如下: #提前准备好把源码包与源码配置文件放置以下路径
nginx源码包:/root/nginx-1.18.0.tar.gz
所替换的nginx配置文件:/data/nginx/nginx.conf
创建ansiblebook剧本,以" .yaml "为后缀
- hosts: nginx
remote_user: root
tasks:
- name: 复制
copy: src=/root/nginx-1.18.0.tar.gz dest=/usr/local/src/
- name: 下载依赖包
shell: yum -y install gcc gcc-c++ pcre pcre-devel zlib zlib-devel openssl openssl-devel
- name: 解压
shell: tar -xf /usr/local/src/nginx-1.18.0.tar.gz -C /usr/local/
- name: 编译
shell: cd /usr/local/nginx-1.18.0;./configure --prefix=/usr/local/nginx
- name: 安装
shell: cd /usr/local/nginx-1.18.0;make && make install
- name: 替换配置文件
copy: src=/data/nginx/nginx.conf dest=/usr/local/nginx/conf/nginx.conf
- name: 启动服务
shell: /usr/local/nginx/sbin/nginx
- name: 查看进程
shell: netstat -nptl | grep "nginx"
##Ansible-playbook剧本格式一定要严格,行数对齐,空格就全空格,tab就全tab,此处建议空格
#像是此处“编译”中的命令如果拆成两句来完成就会执行失败,所以遇到需要进入到某个特定的路径才能执行的命令最好一条命令完成
测试脚本:ansible-playbook -C nginx.yaml
开始脚本:ansible-playbook nginx.yaml
示例二:
假设发放同一个剧本,但主机名、地址或端口又分别以各自的实际命名为标准,则
vim /etc/ansible/hosts
[nginx]
192.168.146.132 ansible_ssh_host=192.168.146.132 ansible_ssh_port=80
192.168.146.134 ansible_ssh_host=192.168.146.134 ansible_ssh_port=8080