一、环境准备

(一)ansible目录基本文件

1. mkdir ~/ansible

2. cd ~/ansible

3. vim ansible.cfg

[defaults]
host_key_checking=false
inventory=inventory

4. vim inventoy

[webservers]
web[1:2]

[dbs]
db1

[cluster:children]
webservers
dbs

(二)主机host配置:

1. vim /etc/hosts

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
# 以下ip地址只是示范,自己的ip地址看主机的ip地址,使用ip a s或者ifconfig查看
192.168.88.3     pubserver
192.168.88.11    web1
192.168.88.12    web2
192.168.88.13    db1

(三)下载ansible:

1. vim /etc/yum.repos.d/el9.repo

[app]
baseurl=file:///mydvd/AppStream
gpgcheck=0
[base]
baseurl=file:///mydvd/BaseOS
gpgcheck=0
#[rpms]
#name = rpms
#baseurl = ftp://192.168.88.3/rpms
#gpgcheck = 0

注:baseurl可以是file地址,可以是http或者ftp地址(本机或者其他能够连通的地址都行),只要能够找到资源,便于yum下载。

使用ftp时也有几个步骤:

1)先将el9.repo的ftp资源注释一下(启动ftp后再放开)

2)yum -y install vsftpd

3) vim /etc/vsftpd/vsftpd.conf

将anonymous_enable=NO改为anonymous_enable=YES

4)启动vsftpd并设置开机自启动

systemctl restart vsftpd && systemctl enable vsftpd

或者systemctl enable vsftpd --now

5)然后把需要用到本机资源的ftp地址加上去

[app]
baseurl=file:///mydvd/AppStream
gpgcheck=0
[base]
baseurl=file:///mydvd/BaseOS
gpgcheck=0
[rpms]
name = rpms
baseurl = ftp://192.168.88.3/rpms
gpgcheck = 0

2.  下载ansible

yum -y install ansible

3. 配置免密登录

1)ssh-keygen命令=》一路enter

2)ssh-copy-id root@ip地址,嫌一个个操作麻烦可以使用for循环

[root@pubserver ~]# for i in web{1..2} db1
> do
> ssh-copy-id $i
> done

4. 查看被管理的所有主机

1)cd ~/ansible
2)ansible all --list-hosts

注意:所有的ansible相关命令都必须在ansible目录下执行!

二、普通yum模块安装(在pubserver主机操作web1主机):

1. vim normal_nginx.yml(可查看ansible目录下同名文件)

---
- name: nginx playbook
  hosts: web1
  tasks:
    - yum:
        name: nginx
        state: latest
    - service:
        name: nginx
        state: started
        enabled: yes
    - template:
        src: index.html
        dest: /usr/share/nginx/html/index.html

2. vim index.html(略)

3. ansible-playbook normal_nginx.yml

4. 查看web1主机有没有正常显示内容(ssh连接web1查看或者直接到web1主机查看):

curl web1 或者 curl web1对应的ip地址

三、使用nginx的tar包源码安装(在pubserver主机操作web2主机):

1. vim install_nginx.sh

#!/bin/bash
#
ps aux | grep nginx && 
killall -9 nginx
ls /usr/local/nginx/ &&
rm -rf /usr/local/nginx/
cd /root/lnmp_soft/nginx-1.17.6 &&
./configure \
  --prefix=/usr/local/nginx \
  --user=nginx \
  --group=nginx \
  --with-http_ssl_module
make && make install
sed -ri "/^\s+location \/ \{/i\    location /jd { index jd.html; }" /usr/local/nginx/conf/nginx.conf
ss -anpt | grep nginx && /usr/local/nginx/sbin/nginx -s reload || /usr/local/nginx/sbin/nginx

2. vim nginx.yml

第一步:准备nginx及相关软件包

(1) 安装unzip

(2) 安装vim编辑器

(3) 安装支持tab键的软件包

(4) 安装网络相关软件包net-tools

(5) 安装支持killall命令的软件 psmisc

(6) 安装编译工具 gcc make

(7) 安装可以让nginx支持正则的软件包 pcre-devel

(8) 安装可以让nginx支持安装加密网站的软件包 openssl-devel

中间步骤:

把pubserver的lnmp_soft.tar.gz 拷贝传入web2虚拟机的root家目录,并解压tar包,解压后cd进入lnmp_soft,再解压nginx-1.17.6.tar.gz,添加用户nginx

收尾:

1)其中script模块执行install_nginx.sh:cd进入nginx-1.17.6后进行配置(指定安装目录/usr/local/nginx,指定用户nginx,设置安全网站模块)、编译、安装三部曲

注:其实以上都可以结合到install_nginx.sh脚本代码中,最后再使用script模块执行install_nginx.sh就好了,可读性可能会更好(如果能够做到全ansible模块,不使用额外的sh脚本另说)。

2)拷贝前端页面代码到web2主机的/usr/local/nginx/html/目录

---
- hosts: web2
  tasks:
    - name: yum install
      yum:
        name: 
          - unzip
          - vim
          - bash-completion
          - net-tools
          - psmisc
          - gcc
          - make
          - pcre-devel
          - openssl-devel
    - copy:
        src: ~/lnmp_soft.tar.gz
        dest: /root
    - unarchive:
        src: ~/lnmp_soft.tar.gz
        dest: /root/
    - unarchive:
        src: ~/lnmp_soft/nginx-1.17.6.tar.gz
        dest: ~/lnmp_soft/
    - user:
        name: nginx
        shell: /sbin/nologin
    - name: run nginx shell
      script: install_nginx.sh
    - copy:
        src: ~/nginx_pages/jd
        dest: /usr/local/nginx/html/
    - copy:
        src: ~/nginx_pages/qimao
        dest: /usr/local/nginx/html/
    - copy:
        src: ~/nginx_pages/wangyiyun
        dest: /usr/local/nginx/html/
    - copy:
        src: ~/nginx_pages/xianhua
        dest: /usr/local/nginx/html/

3. ansible-playbook nginx.yml

4. 查看web2主机有没有正常显示内容(ssh连接web2查看或者直接到web2主机查看):

curl curl web2对应的ip地址/jd/

curl curl web2对应的ip地址/wangyiyun/

...

05-06 13:09