3. 快速开始
环境信息
centos7.9
ansible 2.9.23
任务
我们将要在目标主机上安装部署nginx
服务
步骤
1. 安装ansible
yum安装: EPEL源
yum install epel-release
yum install ansible
2. 定义主机清单
定义一个简单的通过ssh认证的主机清单
cat /etc/ansible/hosts
172.16.10.11 ansible_ssh_user=root ansible_ssh_pass=fxkjnj.com
主机清单中的配置含义
172.16.10.11
定义远程主机ip地址ansible_ssh_user
连接远程主机的用户ansible_ssh_pass
连接远程主机的用户密码
3. 执行ansible命令
测试连接状态
ansible 172.16.10.11 -m ping
命令中的含义
- 172.16.10.11
用于匹配主机清单中的主机名称
- -m ping
指定 ping
模块,用于测试与远程主机的连接状态
安装Nginx
ansible 172.16.10.11 -m yum -a 'name=nginx state=present'
命令中的含义
- 172.16.10.11
用于匹配主机清单中的主机名称
- -m yum
指定 yum
模块,用于安装软件
- -a 'name=nginx'
指定模块的参数,name
是软件的名称
- -a 'state=present'
指定管理状为安装,默认
启动Nginx
ansible 172.16.10.11 -m systemd -a 'name=nginx state=started enabled=yes'
命令中的含义
- 172.16.10.11
用于匹配主机清单中的主机名称
- -m systemd
指定 systemd
模块,用于管理系统服务
- -a 'name=nginx state=started enabled=yes'
指定模块的参数,name
是软件的名称,state
指定管理状态,enabled
是否开启自启动。
4. 验证
5. 执行ansible playbook
定义 playbook
也就是任务编排,将上面3个步骤合并在一起。
---
- name: deploy nginx1.18.0
hosts: all
remote_user: root
tasks:
- name: "创建工作目录"
shell: mkdir -p /home/application/soft
- name: "copy nginx-1.18.0.tar.gz"
unarchive:
src: /home/ansible/soft/nginx/nginx-1.18.0.tar.gz
dest: /home/application/soft
copy: yes
- name: "安装依赖"
yum:
name:
- openssl-devel
- gcc
- make
- pcre-devel
state: present
- name: "创建nginx用户"
user:
name: nginx
shell: /sbin/nologin
createhome: no
system: no
- name: "编译安装nginx"
shell: cd /home/application/soft/nginx-1.18.0;./configure --prefix=/home/application/nginx --user=nginx --group=nginx --with-http_ssl_module --with-http_stub_status_module --with-stream;make -j 4 && make install
- name: "拷贝nginx.conf配置文件"
copy:
src: /home/ansible/soft/nginx/nginx.conf
dest: /home/application/nginx/conf
backup: yes
owner: root
group: root
mode: '0644'
- name: "拷贝nginx.service 自启动配置文件"
copy:
src: /home/ansible/soft/nginx/nginx.service
dest: /etc/systemd/system
owner: root
group: root
mode: '0775'
- name: "添加systemd 管理自启动"
shell: systemctl enable nginx;systemctl start nginx
执行 playbook
ansible-playbook install_nginx.yml