ansible安装及nginx简单部署测试yum及tar包安装nginx(三)

 

要点:

https://blog.csdn.net/weixin_44999385/article/details/96322150之前简单说过ansible的安装及命令解释

ansible介绍:

ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet、cfengine、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能。

ansible是基于模块工作的,本身没有批量部署的能力。真正具有批量部署的是ansible所运行的模块,ansible只是提供一种框架。

ansible特性:

模块化:调用特定的模块,完成特定任务

有Paramiko,PyYAML,Jinja2(模板语言)三个关键模块

支持自定义模块

基于Python语言实现

部署简单,基于python和SSH(默认已安装),agentless

安全,基于OpenSSH

支持playbook编排任务

幂等性:一个任务执行1遍和执行n遍效果一样,不因重复执行带来意外情况

无需代理不依赖PKI(无需ssl)

可使用任何编程语言写模块

YAML格式,编排任务,支持丰富的数据结构

较强大的多层解决方案

Ansible的架构

https://img-blog.csdn.net/20180628201524531?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2x2ODU0OTUxMA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70

由以下几个核心组件构成:

ansible(主体):ansible的核心程序,提供一个命令行接口给用户对ansible进行管理操作;

Host Inventory(主机清单):为Ansible定义了管理主机的策略。一般小型环境下我们只需要在host文件中写入主机的IP地址即可但是到了中大型环境我们有可能需要使用静态inventory或者动态主机清单来生成我们所需要执行的目标主机。

Core Modules(核心模块):Ansible执行命令的功能模块,多数为内置的核心模块。

Custom Modules(拓展模块):如何ansible自带的模块无法满足我么你的需求,用户可自定义相应的模块来满足自己的需求。

Connection Plugins(连接插件):模块功能的补充,如连接类型插件、循环插件、变量插件、过滤插件等,该功能不常用

Playbook(任务剧本):编排定义ansible任务集的配置文件,由ansible顺序依次执行,通常是JSON格式的* YML文件

API:供第三方程序调用的应用程序编程接口

Ansible工作原理:

管理端支持local 、ssh、zeromq 三种方式连接被管理端,默认使用基于ssh的连接---这部分对应基本架构图中的连接模块;

可以按应用类型等方式进行Host Inventory(主机群)分类,管理节点通过各类模块实现相应的操作---单个模块,单条命令的批量执行,我们可以称之为ad-hoc;

管理节点可以通过playbooks 实现多个task的集合实现一类功能,如web服务的安装部署、数据库服务器的批量备份等。playbooks我们可以简单的理解为,系统通过组合多条ad-hoc操作的配置文件 。

要求:用ansible部署两台以上服务:(另外两台服务器不做任何操作)

1:用yum部署nginx

2:用源码tar包方式部署nginx

两种方式都需要启动服务,开机自启,设置防火墙

ansible的安装来源于epel仓库,因此在安装前需确保安装了正确的epel源。

yum install -y epel1、准备三台虚拟机
ansible:192.168.1.21----安装ansible
  agent1:192.168.1.10
  agent2:192.168.1.50

 

一:安装ansible(yum安装)

# yum list | grep ansible(查看yum安装过ansible没有)
# yum install -y ansible  (安装ansible)大约1分钟

# ansible –version  显示ansible的版本)如下图显示则安装成功

 

[root@ansible ~]# cd /etc/ansible/

[root@ansible ansible]# ls

ansible.cfg  hosts  roles

ansible.cfg 主配置文件,配置ansible工作特性

hosts 主机清单

roles/ 存放角色的目录

2:更改ansible主配置文件与配置hosts

ansible配置文件

  ansible 的配置文件为/etc/ansible/ansible.cfgansible 有许多参数,下面我们列出一些常见的参数:

14 inventory = /etc/ansible/hosts #这个参数表示资源清单inventory文件的位置

15 library = /usr/share/ansible #指向存放Ansible模块的目录,支持多个目录方式,只要用冒号(:)隔开就可以

20 forks = 5 #并发连接数,默认为5

22 sudo_user = root #设置默认执行命令的用户

26 remote_port = 22 #指定连接被管节点的管理端口,默认为22端口,建议修改,能够更加安全 71 host_key_checking = False #设置是否检查SSH主机的密钥,值为True/False。关闭后第一次连接不会提示配置实例

103 timeout = 60 #设置SSH连接的超时时间,单位为秒

111 log_path = /var/log/ansible.log #指定一个存储ansible日志的文件(默认不记录日志)

3添加ansible客户机组把被控制端的ip分组添加到hosts里;(要求使用不同的安装方式来安装nginx)添加资产

:

4:测试是否能ping通其他需要远程的主机:

 

配置密钥对(可免密登录):

1):在ansible配置文件中开启密钥验证:(上面主配置文件已更改)

 

2):生成密钥(一直回车)

 

3)向其他主机发送自己的公钥:

[root@ansible ansible]# ssh-copy-id -i /root/.ssh/id_rsa.pub 192.168.1.10

[root@ansible ansible]# ssh-copy-id -i /root/.ssh/id_rsa.pub 192.168.1.50

#写入成功后会在192.168.1.10目录~/.ssh/下生成authorized_keys

#验证免密登录是否成功,回车后能登录成功,说明设置成功

ssh root@192.168.1.10

4)将ansible主机上的阿里云yum源传给远程服务器1.101.50

[root@ansible ansible]#ansible yum -m copy -a "src=/etc/yum.repos.d/CentOS-Base.repo  dest=/etc/yum.repos.d/CentOS-Base.repo"

 

查看一下:

 

在ansible服务器上安装一台nginx,在nginx官网上下载nginx tar包,

[root@ansible ~]# wget http://nginx.org/download/nginx-1.16.1.tar.gz

[root@ansible ~]# ls

anaconda-ks.cfg  initial-setup-ks.cfg  nginx-1.16.1.tar.gz

1,在主机192.168.1.50上安装nginx:

编写一个脚本

[root@ansible ~]## cat nginx.sh

#!/bin/bash

yum -y  install pcre-devel  &> /dev/null

yum -y install openssl-devel &> /dev/null

tar zxf /root/nginx-1.16.1.tar.gz

cd /root/nginx-1.16.1

./configure --prefix=/usr/local/nginx  --with-http_dav_module --with-http_stub_status_module  --with-http_addition_module --with-http_sub_module --with-http_flv_module --with-http_mp4_module --with-pcre --with-http_ssl_module --with-http_gzip_static_module &> /dev/null  && make &> /dev/null  && make install  &> /dev/null

ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/

cd /root/nginx-1.16.1

nginx

echo "$(netstat -anpt |  grep 80)"

将下载好的tar包发送给使用tar安装nginx的服务器

[root@ansible ~]# ansible tar -m copy -a "src=/root/nginx-1.16.1.tar.gz dest=/root"

 

将本机上的编写好的脚本拷贝给需要安装nginx的远程服务器

[root@ansible ~]#  ansible tar -m copy -a "src=/root/nginx.sh dest=/root/"

执行远程主机上的安装脚本:

[root@ansible ~]#ansible test1 -m shell -a "sh /root/nginx.sh"

现在yum部署nginx:

编写依赖脚本:

 

yum -y install epel-release   &>  /dev/null

将本机上的编写好的脚本拷贝给需要yum安装nginx的远程服务器:

[root@ansible ~]# ansible yum -m copy -a "src=/root/yum.sh dest=/root"

执行远程主机上的安装脚本:

成功后再执行yum安装:

[root@ansible ~]# ansible yum -m yum -a "name=nginx state=installed"

验证:(在1.10与1.50服务器上查看nginx服务)

 

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Ansible是一个自动化工具,可以用来配置和管理服务器。使用Ansible一键安装Nginx可以方便地快速部署Nginx并进行配置。下面是一种可能的方法: 1. 在Ansible中创建一个playbook(剧本)文件,比如nginx.yaml,用来描述安装Nginx的任务和配置。 2. 在nginx.yaml中,定义一个任务(task)来安装Nginx。可以使用适合你的操作系统的软件管理器(如yum或apt-get)来安装Nginx。可以参考中提到的LNMP和LNMT的剧本来编写。 3. 在nginx.yaml中,定义一个任务来分发Nginx的配置文件。可以使用Ansible提供的copy模块来将配置文件复制到目标服务器上。具体的配置文件路径和内容可以根据你的需求进行修改。 4. 在nginx.yaml中,定义一个任务来重启Nginx,以使配置生效。可以使用适合你的操作系统的服务管理工具(如systemctl或service)来重启Nginx。 5. 运行ansible-playbook命令,指定nginx.yaml作为剧本文件,即可开始安装Nginx并进行配置。 请注意,上述步骤仅为一种可能的方法,具体的步骤和配置内容可能因环境和需求而有所不同。你可以根据实际情况进行调整和修改。 : 参考内容1中提到的LNMP和LNMT的剧本可能含了安装Nginx和其他组件的任务和配置,可以参考其中的方法来编写你自己的nginx.yaml剧本。 希望以上信息对你有所帮助。如果你有任何其他问题,请随时提问。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值