跳转至

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. 验证

image-20220421102633617

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