八、nginx+ansible(入门)

目录

1.ansible

        1.1 思考:

        1.2 ansible架构

        1.3 使用环境

        1.4安装

2.ansible使用

        2.1ansible-doc

                2.1.1ansible-doc --help

                2.1.2ansible-doc -l

                2.1.3ansible-doc -s 模块名

         2.2ansible使用语法

3.使用ansible在两台web服务器上一键安装nginx

 4.ansible常用模块

        4.1copy模块

        4.2fetch模块

        4.3script模块

        4.4command模块

        4.5 shell模块

        4.6 file模块

        4.7 yum模块

        4.8service模块

        4.9cron模块


1.ansible

        1.1 思考:

        如果我们需要在100台服务器上安装nginx我们该怎么做?

        首先我们想到的最原始的想法是一台一台的安装nginx,显然这是个方法,但如果不是100台服务器而是10000台服务器,这个手动安装的方法则显得单纯可爱。所以有没有一种工具能够帮我们到这么多台服务器上一键安装呢,就像shell脚本一样,可以输入bash 脚本名,linux内核就自动帮我们去执行脚本里的指令了。

        这时候自动化运维工具出现了,ansible是一款自动化运维工具,基于Python开发,实现了批量系统配置、批量系统配置、批量运行命令等功能。

        1.2 ansible架构

        1.3 使用环境

               布局

        ansible服务器:ansible 2.9.27   CentOS Linux release 7.9.2009

        web1/web2:CentOS Linux release 7.9.2009

        1.4安装

        yum install ansible -y

2.ansible使用

        2.1ansible-doc

                2.1.1ansible-doc --help

                获取帮助信息

                2.1.2ansible-doc -l

                查看所有模块名

                2.1.3ansible-doc -s 模块名

                查看指定模块的帮助信息

         2.2ansible使用语法

ansible  
HOST-PATTERN      #匹配主机模式,如all表示所有主机-m MOD_NAME       #模块名   如:ping-a MOD_ARGS        #模块执行的参数-f FORKS                  #生成几个子进行程执行-C                               #(不执行,模拟跑)-u Username             #某主机的用户名-c  CONNection        #连接方式(default smart)

         #看不懂没关系,下面我会教你使用

3.使用ansible在两台web服务器上一键安装nginx

1.在hosts文件中空白位置添加配置需要管理的组,这里我添加为webservers

[root@hzw ~]# cd /etc/ansible/
[root@hzw ansible]# vim hosts 

 2.配置免密通道

[root@hzw ssh]# cd /etc/ssh/
[root@hzw ssh]# ssh-keygen 
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 
/root/.ssh/id_rsa already exists.
Overwrite (y/n)? 
[root@hzw ssh]# cd /root/.ssh/
[root@hzw .ssh]# ssh-copy-id -i id_rsa.pub root@192.168.83.129

[root@hzw .ssh]# ssh-copy-id -i id_rsa.pub root@192.168.83.204

3.使用此语句将nginx二进制安装一键安装脚本复制到两台web服务器上

[root@hzw .ssh]# ansible webservers -m copy -a "src=/root/install_nginx.sh dest=/root"

        #我将两台web服务器ip添加在webservers组中,ansible后接组名,我们也可用使用all,意思是所有组,在我的配置中就一个webserverss组,所以ansible all后再接语句。

        -m 后接模块名,这里是copy模块,意思是将ansible服务器/root/install_nginx.sh复制到两台web服务器的/root下

        -a 后接模块执行的参数,这里是src和dest参数,表示源地址和目的地址,相当于我们寄快递时的发货地址和收货地址

        -f 后接子进程数,我这里没加这个参数,表示几个子进程同时执行。

4.在两台web服务器中使用二进制一键安装nginx 脚本安装nginx

[root@hzw .ssh]# ansible webservers -m shell -a "bash /root/install_nginx.sh"

#安装过程会有些长,如果出现的字体是红色这说明语句执行失败了,具体原因可能是防火墙没关、hosts文件中配置的webservers组有问题,免密通道没建立等等。

如果字体是黄色则表示成功,黄色表示第一次执行或者数据有了更改,绿色则表示不是第一次执行此内容,当然也是成功的标志。

5.验证

#脚本中有些语句执行了,但没有效果,需要自己手动添加

echo "PATH=$PATH:/usr/local/nginx1/sbin" >>/root/.bash_profile
source /root/.bash_profile

useradd -s /sbin/nologin -M peanuts
#这个问题我暂时不清楚原因,以后弄明白了,我会再回来修改的。

 4.ansible常用模块

        4.1copy模块

        从本地copy文件分发到目的主机路径

src= 源文件路径
dest= 目标路径 
content= 自行填充的文件内容
owner 属主
group 属组
mode权限

        ansible webservers -m copy -a "src=/root/install_nginx.sh dest=/root"

         #因为之前测试执行过了,所以颜色为绿色,第一次执行时黄色。

        4.2fetch模块

        从远程主机拉取文件到本地

        ansible 192.168.83.129 -m fetch -a "src=/root/install_nginx.sh dest=/root"

        #和copy模块类似,copy传过去,fetch拉过来

        4.3script模块

        将本地脚本放在远程主机执行

[root@hzw ~]# ansible all -m script -a "/root/echo.sh"

#讲一个打印脚本放在远程执行,打印内容放在/root/ansible.txt里。

        4.4command模块

        在远程主机上执行命令,属于裸执行,不进行shell解析,不推荐使用。

        4.5 shell模块

        在远程主机上执行命令,进行shell解析

        4.6 file模块

        操作文件

常用参数:
path目标路径
state directory为目录,link为软件链接,touch为文件
group 目录属组
owner 属主

        ansible all -m file -a "path=~/wj.txt state=touch"

        4.7 yum模块

        安装软件

常用参数说明:
enablerepo,disablerepo表示启用与禁用某repo库
name 安装包名
state (present' orinstalled', latest')表示安装, (absent' or `removed') 表示删除

         ansible all -m yum -a "name=net-tools state=installed"

        4.8service模块

        服务管理模块

常用参数:
name:服务名
state:服务状态
enabled: 是否开机启动 true|false
runlevel: 启动级别 (systemed方式忽略)

        ansible all -m service -a "name=sshd state=stopped enabled=true"

        4.9cron模块

        对目标主机生成计划任务

常用参数:
除了分(minute)时(hour)日(day)月(month)周(week)外
name: 本次计划任务的名称
state: present 生成(默认) |absent 删除 (基于name)

        1.将脚本分发到两台web服务器上,

 

 脚本内容为创建一个文件夹/test,在/test中创建文件

         2.创建计划任务 

        3.查看

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值