ansible自动化运维环境部署、主机清单

ansible服务器环境部署

DNS 域名解析

 vim /etc/hosts 
192.168.220.10 ansible
192.168.220.12 host1
192.168.220.13 host2
192.168.220.14 host3
192.168.220.15 host4

安装ansible服务器

yum install -y epel-release  //安装epel扩展源
yum install -y ansible       //安装ansible

ansible --version   //可以选择查看ansible版本

在这里插入图片描述

检测部署是否完成
ansible --version 查看ansible版本
rpm -ql ansible 列出所有文件
rpm -qc ansible 查看配置文件
ansible --help 查看ansible帮助
ansible-doc #帮助命令
ansible-doc -l 看所有模块
ansible-doc 模块名 #查看模块的详细信息
ansible-doc 模块名 -s #查看模块的选项使用说明
例如:ansible-doc -s yum 看yum模块,了解其功能 install ( present’ or installed’, latest’), or remove ( absent’ or `removed’) yum list Package name enablerepo

ansible常用参数

-m          //指定使用的模块名称,不指定默认使用command模块
-a          //使用的模块参数,模块的具体动作;指定要执行的具体命令
--version   //ansible版本信息
-i          //主机清单文件路径,默认是在/etc/ansible/hosts
-k          //提示输入ssh密码,而不使用基于ssh的密钥认证
-v          //显示详细信息
-C          //模拟执行测试,但不会真的执行
-T          //执行命令的超时
-f  		//一次返回几个结果
--syntax-check      //验证语法

ssh-key(可选)

为了让ansible能够免密控制其它服务器,将生成秘钥并拷贝到其它服务器(要进行控制的服务器上)

ssh-keygen           //生成密钥
ssh-copy-id host1    //拷贝秘钥到其它服务器。注意,这里只拷贝到了host1,其它机器没有拷贝
ssh root@host1       //连接成功后 注意退出远程连接
exit

定义主机清单

vim /etc/ansible/hosts   //添加以下内容。没有添加在主机清单的服务器,ansible会ping不通
host1
host2
host3
host4
// 在ansible 服务器上
ansible localhost -m ping  //测试对本地的连通性 
ansible host1 -m ping      //测试对host1的连通性

简介输出 -o

在这里插入图片描述

在这里插入图片描述

ansible host2 -m ping      //结果会显示失败,因为host2上没有免密登录秘钥
ansible host2 -m ping -u root -k -o   //表明身份后即可成功
vim /etc/ssh/ssh_config  
StrictHostKeyChecking no       //找到StrictHostKeyChecking此行内容,注释解除,再将ask改为no
systemctl restart sshd        //重启生效

请注意ping和ssh
ping
ICMP:网际消息管理协议
关闭host1主机的sshd进程,进行ping连通性测试。
再使用ansible对host1进行联通测试时,却是失败的。
结论ansible的ping,是探测ssh程序是否连接。不是icmp协议

//在host1服务器
systemctl stop sshd

//在ansible服务器
ping host1                 //可以ping通host1服务器
ansible host1 -m ping      //结果显示不成功

在这里插入图片描述

ansible主机清单

Ansible主机清单:主机资产清单,用于定义被管理主机的认证信息, 例如ssh登录用户名、密码以及key相关信息。

添加主机组

vim /etc/ansible/hosts  
[web]           //添加主机组
host1
host2
host3
host4
 
ansible web -m ping -o    //-o输出以行的形式展示

在这里插入图片描述

如果是以下报错,请检查你的主机清单是否有错误
在这里插入图片描述

增加用户名和密码

[web]
host1 ansible_ssh_user='root' ansible_ssh_pass='root'   //ansible_ssh_user ansible连接的用户名
host2 ansible_ssh_user='root' ansible_ssh_pass='root'  //ansible_ssh_pass ansible连接的密码
host3 ansible_ssh_user='root' ansible_ssh_pass='root'
host4 ansible_ssh_user='root' ansible_ssh_pass='root'

ansible web -m ping   //免用户名免密码

//另一种写法
[web]
host[1:4] ansible_ssh_user='root' ansible_ssh_pass='root'

修改端口号

例如:
修改host1服务器的端口号

vim /etc/ssh/sshd_config 
Port 2222   //内容解除注释,并将22修改为2222 端口号1024~65535之间都可以
systemctl restart sshd
vim /etc/ansible/hosts
[web]
host1 ansible_ssh_user='root' ansible_ssh_pass='root' ansible_ssh_port='2222'
host[2:4] ansible_ssh_user='root' ansible_ssh_pass='root'

ansible web -m ping -o

组:变量

[web]            //组名
host[1:4]
[web:vars]       //组的变量
ansible_ssh_user='root' ansible_ssh_pass='root'

子分组

主机组:

1.嵌套 [组名:children]

2.对组定义变量 [组名:vars]

vim /etc/ansible/hosts
[apache]          //子分组名
host[1:2]
[nginx]           //子分组名
host[3:4]
[web:children]    //apache、nginx为web的孩子
apache
nginx
[web:vars]        //web的变量
ansible_ssh_user='root'
ansible_ssh_pass='root'

自定义主机列表

vim hostlist        //新建主机列表清单
[dockers]   
host1
host2
[dockers:vars]
ansible_ssh_user='root'
ansible_ssh_pass='root'

ansible -i hostlist dockers -m ping -o   // -i链接主机清单,hostlist文件名,dockers组名。

  • 5
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Ansible是一种用于自动化运维的工具,可以帮助管理员简化和自动化常见的管理任务。下面是一个使用Ansible自动化运维实例。 假设我们有一个包含多个服务器的Web应用程序。每次更新应用程序或更改配置时,都需要在所有服务器上手动执行相同的操作,这是一项耗时且容易出错的任务。使用Ansible,我们可以自动化这个过程。 首先,我们需要在Ansible主控节点上创建一个名为inventory的清单文件,列出所有的服务器。然后,我们需要编写一个名为playbook的配置文件,在其中定义我们要执行的任务。 在playbook中,我们可以使用Ansible的模块来执行特定的操作。对于我们的Web应用程序,我们可以使用模块来安装软件包、启动/停止服务、复制文件等。 例如,要更新我们的应用程序,我们可以使用Ansible的模块来从源代码库中拉取最新版本的应用程序代码,并在服务器上进行部署。我们可以通过在playbook中使用Git模块来下载最新代码,并使用Shell模块在服务器上执行必要的命令来构建和部署应用程序。 另外,我们还可以使用Ansible的变量来配置不同的环境。例如,我们可以在playbook中定义一个变量,用于指定部署应用程序时使用的配置文件。 最后,我们可以在命令行中运行Ansible命令,指定使用的inventory和playbook文件。Ansible将会连接到目标服务器并执行我们定义的任务。 通过使用Ansible,我们可以实现自动化运维,避免手动执行重复任务,提高效率和准确性。这不仅节省了管理员的时间和精力,还能减少人为错误的发生,提高整个系统的稳定性和可靠性。 ### 回答2: Ansible是一种自动化运维工具,它具有简单易用、灵活可扩展的特点。下面我将介绍一个使用Ansible实现自动化运维的实例。 假设我们有一个由多台Web服务器组成的集群,需要将代码及相关配置文件更新到每台服务器并重启服务。使用Ansible可以轻松实现这个任务。 首先,我们需要在本地机器上安装Ansible并配置相关的主机清单文件和SSH密钥。主机清单文件用于指定要管理的远程服务器,SSH密钥用于与远程服务器进行安全连接。 接下来,我们创建一个Ansible Playbook文件来定义整个任务的执行流程。在该文件中,我们可以使用Ansible的模块来执行各种操作,如复制文件、运行命令等。 playbook的执行由几个组件组成,包括主机清单文件、变量文件、任务和处理器。我们可以在任务中定义一系列的步骤来完成更新和重启服务的操作。 例如,我们可以使用`copy`模块将最新的代码复制到远程服务器上的指定目录。使用`command`模块可以执行重启服务的命令。同时,还可以使用`notify`和`handlers`来定义触发重启服务的条件和处理方法。 执行该playbook时,Ansible会自动连接到每台服务器,并按照playbook中定义的步骤逐个执行。通过Ansible的并发执行特性,我们可以同时在集群中的多台服务器上进行操作,大大提高了效率。 除了更新代码和重启服务,Ansible还可以实现其他自动化运维任务,如添加用户、配置数据库等。通过编写相应的playbook文件,我们可以轻松地扩展和定制自己的自动化运维需求。 总之,Ansible是一款强大的自动化运维工具,它提供了简单且灵活的方式来管理和维护服务器集群。通过使用Ansible,我们可以轻松实现各种自动化任务,提高工作效率并降低人为失误的风险。 ### 回答3: Ansible是一款强大的自动化运维工具,它具有简单易用、开放源代码、轻量级等特点。下面我将以一个简单的实例来说明Ansible自动化运维能力。 假设我们有一组服务器,需要在每个服务器上安装一个名为"Nginx"的Web服务器,并确保所有服务器上的Nginx服务都处于运行状态。使用Ansible可以轻松实现这个任务。 首先,我们需要编写一个Ansible的Playbook,定义我们希望在目标服务器上执行的操作。假设我们的Playbook文件名为"nginx_installation.yml",内容如下: --- - name: Install and start Nginx hosts: web_servers become: true tasks: - name: Install Nginx apt: name=nginx state=present - name: Start Nginx service: name=nginx state=started 这个Playbook定义了一个名为"Install and start Nginx"的任务,使用apt模块在目标服务器上安装Nginx,并使用service模块启动Nginx服务。我们还通过指定hosts参数将任务应用到名为"web_servers"的服务器组上,并通过become参数指定使用特权权限执行任务。 接下来,我们可以使用ansible命令来运行这个Playbook,指定目标服务器组和登录凭证: ansible-playbook -i inventory.ini nginx_installation.yml -u username -k 其中,inventory.ini是一个主机清单文件,包含了我们的服务器信息,username是登录服务器的用户名,-k参数表示提示输入密码。 当我们运行这个命令后,Ansible会自动连接到每个目标服务器,并在其上执行定义的操作。安装和启动Nginx服务的过程将在每个服务器上自动完成,我们不再需要手动登录服务器进行操作。 通过这个简单的实例,我们可以看到Ansible实现自动化运维的便利性和高效性。只需要编写一个简单的Playbook,就能轻松地在多台服务器上执行相同的操作,大大提升运维效率。而且,Ansible的语法简洁明了,易于理解和维护,即使对于没有编程经验的运维人员也能够快速上手使用。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值