自动化运维(四)第一个Ansible任务

AWX和Ansible已经安装好,接下来我们使用一个简单的任务,要学习一下怎么使用这个工具。我们首先准备一下测试环境,我的测试环境共有6台虚拟机,服务器信息如下:

Ansible服务器192.168.110.170自动化管理服务器
WEB服务器192.168.110.250测试WEB服务器安装Nginx
数据库服务器192.168.110.150安装Mysql
DNS服务器192.168.110.22内网dns,安装DNSmasq
Redis服务器192.168.110.28缓存服务器安装redis
Jenkins服务器192.168.110.151

发布代码到测试服务器

为了配置Ansible  来管理这些指定的节点,我们需要执行一系列步骤,来确保 Ansible能够与这些节点进行通信和管理。下面介绍如何配置 AWX 管理这些服务器:

环境配置

首先,你需要确保 Ansible安装的服务器(192.168.110.170)能够访问你想要管理的其他服务器。这意味着网络上没有阻止 Ansible访问这些目标服务器的防火墙或者其他网络安全设置,主要涉及到三个方面:网络连通性、防火墙设置、以及SSH权限设置。下面是一些具体的步骤来检查和确保这些访问权限:

网络连通性测试
  • Ping 测试: 使用 ping 命令来检测 AWX 服务器能否到达其他服务器。例如,你可以从 Ansible服务器 ping 192.168.110.250(Nginx服务器)。
ping 192.168.110.250

如果你收到回复,表明在网络层面上,两台服务器是连通的。

检查防火墙设置

确保没有防火墙规则阻止 Ansible服务器与其他服务器之间的通信。这可能需要你检查每台服务器上的防火墙设置,包括但不限于iptables、ufw或是云平台的安全组设置。

  • 对于使用 iptables 的系统:

    检查当前的规则,尤其是那些可能会Drop或Reject数据包的规则。

    sudo iptables -L
    
  • 对于使用 ufw 的系统:

    检查 ufw 的状态以及相关规则是否允许来自 Ansible服务器的连接。

    sudo ufw status
    
SSH权限设置
  • 无密码 SSH 登录: AWX/Ansible 通常使用 SSH 私钥来认证。确保 Ansible服务器的 SSH 公钥已经添加到其他服务器的~/.ssh/authorized_keys文件中,并且对应的用户有权做需要的操作。可参考我的另一篇博文《Linux服务器之间SSH免密登陆》

  • 检查 SSH 配置: 在 Ansible服务器上检查是否能够无密码登录到目标服务器。

    ssh 192.168.110.250
    

    如果无法成功连接,请检查~/.ssh/authorized_keys文件的权限设置,确保 SSH 服务配置正确,且没有在/etc/hosts.deny中被拒绝。

特定端口通信

除了基础的 SSH 访问,你可能需要保证 Ansible服务器能够通过特定端口访问比如 MySQL、Nginx 或 Kubernetes 相关的服务端口。这需要确定这些服务监听的端口对 AWX 服务器开放且没有被防火墙规则所阻挡。

确保所有必要的通信通道打开后,你就可以顺利在 Ansible中管理这些节点了。若存在任何连通性问题,从上述检查中定位并解决问题。如果是在企业环境中,还可能需要与网络团队合作,确保网络策略满足要求。

第一个Ansible任务

我们现在创建一个简单的Ansible任务,来实现所有的服务器ping www.baidu.com这个域名,判断这些服务器是否可以正常连外网。

创建inventory文件

你可以在Ansible主机上创建一个inventory文件,然后在playbook中指定这个inventory文件。在inventory文件中,你可以定义所有的目标主机。然后你可以在playbook中定义一个任务,使用shell或command模块运行ping命令,然后检查返回的结果。

首先,创建一个名为hosts的inventory文件,内容如下:

[web]
192.168.110.250[db]
192.168.110.150[dns]
192.168.110.22[redis]
192.168.110.28[jenkins]
192.168.110.151
创建playbook文件

然后,创建一个名为check_internet.yml的playbook,内容如下:

---
- name: Check internet connectionhosts: allgather_facts: notasks:- name: Ping www.baidu.comcommand: ping -c 1 www.baidu.comregister: resultignore_errors: true- name: Show resultdebug:msg: "Ping www.baidu.com success."when: result.rc == 0- name: Show errordebug:msg: "Ping www.baidu.com failed."when: result.rc != 0
运行执行任务

最后,你可以运行以下命令,使Ansible根据你的inventory文件和playbook执行任务:

ansible-playbook -i hosts check_internet.yml

这个命令会在所有在inventory文件中定义的主机上运行ping命令,然后根据返回的结果输出相应的信息。

执行的结果如下:


PLAY [Check internet connection] *********************************************************************************************************************************************************TASK [Ping www.baidu.com] ****************************************************************************************************************************************************************
changed: [192.168.110.28]
changed: [192.168.110.22]
changed: [192.168.110.151]
changed: [192.168.110.150]
[DEPRECATION WARNING]: Distribution Ubuntu 20.04 on host 192.168.110.250 should use /usr/bin/python3, but is using /usr/bin/python for backward compatibility with prior Ansible 
releases. A future Ansible release will default to using the discovered platform python for this host. See 
https://docs.ansible.com/ansible/2.9/reference_appendices/interpreter_discovery.html for more information. This feature will be removed in version 2.12. Deprecation warnings can be 
disabled by setting deprecation_warnings=False in ansible.cfg.
changed: [192.168.110.250]TASK [Show result] ***********************************************************************************************************************************************************************
ok: [192.168.110.250] => {"msg": "Ping www.baidu.com success."
}
ok: [192.168.110.150] => {"msg": "Ping www.baidu.com success."
}
ok: [192.168.110.22] => {"msg": "Ping www.baidu.com success."
}
ok: [192.168.110.28] => {"msg": "Ping www.baidu.com success."
}
ok: [192.168.110.151] => {"msg": "Ping www.baidu.com success."
}TASK [Show error] ************************************************************************************************************************************************************************
skipping: [192.168.110.250]
skipping: [192.168.110.22]
skipping: [192.168.110.150]
skipping: [192.168.110.28]
skipping: [192.168.110.151]PLAY RECAP *******************************************************************************************************************************************************************************
192.168.110.150            : ok=2    changed=1    unreachable=0    failed=0    skipped=1    rescued=0    ignored=0   
192.168.110.151            : ok=2    changed=1    unreachable=0    failed=0    skipped=1    rescued=0    ignored=0   
192.168.110.22             : ok=2    changed=1    unreachable=0    failed=0    skipped=1    rescued=0    ignored=0   
192.168.110.250            : ok=2    changed=1    unreachable=0    failed=0    skipped=1    rescued=0    ignored=0   
192.168.110.28             : ok=2    changed=1    unreachable=0    failed=0    skipped=1    rescued=0    ignored=0   

 从目前的结果看,这几台服务器都可以正常访问外网。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/793305.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

交换机特性解析

​1. 端口数量和类型: RJ-45端口: 最常见的端口类型,用于连接网线。 铜缆类型: 超五类、六类、七类等,影响传输速率和距离。 PoE功能: 支持为连接的设备供电,如IP电话、无线AP等。 光纤端口: 用于连接光纤,支持更长的传输距离和更高的速率。 光纤类型: 单模、多模等,影响传…

Python100个库第8个—ftfy(Unicode文本工具)

目录 专栏导读库的介绍安装用法1:ftfy修复文本用法2:修复文本中的特殊字符用法3:修复给定文本片段中的Unicode编码问题和其他字符问题总结 专栏导读 🌸 欢迎来到Python办公自动化专栏—Python处理办公问题,解放您的双手…

【c++20】金山云liuguang引擎

看到大神说liuguang是c++20 开发的下载回来学习下说明文档 liuguang下载源码 zhangbin@DESKTOP-1723CM1 MINGW64 /g/CDN/liuguang-engine $ git clone https://github.com/ksyun-kenc/liuguang Cloning into liuguang... remote: Enumerating objects:

[UTCTF 2024] crypto 部分

RSA-256 RSA签到太简单了 N 77483692467084448965814418730866278616923517800664484047176015901835675610073 e 65537 c 43711206624343807006656378470987868686365943634542525258065694164173101323321 p,q1025252665848145091840062845209085931,755752167715513324…

网易RAG问答知识库开源了,Star 6K!!

网易RAG问答知识库开源了,Star 6K!! RAG 问答知识库 QAnything 开源了QAnything 架构设计剖析整个架构的工作流程主要包含三个环节为什么需要两阶段检索?使用的基座大模型相关技术组件 QAnything 本地部署一键部署安装&#xff0c…

算法——验证二叉树的前序序列化

题目:. - 力扣(LeetCode) 序列化二叉树的一种方法是使用 前序遍历 。当我们遇到一个非空节点时,我们可以记录下这个节点的值。如果它是一个空节点,我们可以使用一个标记值记录,例如 #。 例如,上…

对HTML语义化的理解

语义化是指根据内容的结构化(内容语义化),选择合适的标签(代码语义化)。通俗来讲就是用正确的标签做正确的事情。 语义化的优点如下: 对机器友好,带有语义的文字表现力丰富,更适合…

【CSS】基础选择器

目录 标签选择器 id选择器 类选择器 CSS的编写地点&#xff1a; 标签选择器 说明&#xff1a;标签选择器实际上就是HTML标签元素&#xff08;可以是任何HTML元素&#xff09;&#xff0c;用来改变一个指定标签的样式 示例&#xff1a; <style type"text/css"…

用vscode仿制小米官网

html内容: <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title><link rel&quo…

VC++ Windows 平台通过QOS2库函数设置Socket DSCP(IP_TOS)参数选项

本体提供的函数实现&#xff0c;只能对于TCP生效&#xff0c;UDP没法生效&#xff0c;看文档没搞明白&#xff0c;有了解UDP怎么设置DSCP的童鞋&#xff0c;可以在评论区给予答复。 用法是这样的&#xff0c;每个TCP在建立链接后&#xff0c;立即创建这个QOSS的实例&#xff0c…

深入Tauri开发——从环境搭建到项目构建

深入Tauri开发——从环境搭建到项目构建 开启你的Tauri桌面应用开发之旅&#xff08;续&#xff09; 经过上一篇文章的基础介绍&#xff0c;现在让我们更进一步&#xff0c;详细阐述如何在Windows和macOS平台上顺利搭建Tauri应用所需的开发环境&#xff0c;并指导您从创建项目…

vscode前后台分离Nodejs+vue校园影院售票系统_490gq

柚子校园影院在设计与实施时&#xff0c;采取了模块性的设计理念&#xff0c;把相似的系统的功能整合到一个模组中&#xff0c;以增强内部的功能&#xff0c;减少各组件之间的联系&#xff0c;从而达到减少相互影响的目的。 后台主要包括首页&#xff0c;个人中心&#xff0c;用…

Java内存模型(JMM)-happens-before

Java内存模型&#xff08;JMM&#xff09;-happens-before Java内存模型&#xff08;JMM&#xff09;是一种规范&#xff0c;用于定义多线程程序中&#xff0c;线程如何与主内存、工作内存以及其他线程之间进行通信和交互。 其中&#xff0c;happens-before是JMM中的一个重…

Qt 实现的万能采集库( 屏幕/相机/扬声器/麦克风采集)

【写在前面】 之前应公司需要&#xff0c;给公司写过一整套直播的库( 推拉流&#xff0c;编解码)&#xff0c;类似于 libobs。 结果后来因为没有相关项目&#xff0c;便停止开发&维护了。 不过里面很多有用的组件&#xff0c;然后也挺好用的&#xff0c;遂开源出来一部分。…

Java 处理Mysql获取树形的数据

Mysql数据&#xff1a; 代码如下&#xff1a; Entity&#xff1a; Data Accessors(chain true) public class Region {private BigInteger id;//名称private String name;//父idprivate BigInteger parentId;private List<Region> children;private Integer createTim…

clickhouse MPPDB数据库--新特性使用示例

clickhouse 新特性&#xff1a; 从clickhouse 22.3至最新的版本24.3.2.23&#xff0c;clickhouse在快速发展中&#xff0c;每个版本都增加了一些新的特性&#xff0c;在数据写入、查询方面都有性能加速。 本文根据clickhouse blog中的clickhouse release blog中&#xff0c;学…

K8S Deployment 简介, 1个简单的Kubernetes Deployment YAML 文件

当谈到 Kubernetes 集群中的应用程序部署和管理时&#xff0c;Deployment、ReplicaSet 和 Pod 是三个重要的概念。它们之间存在一定的关系和层次结构。下面是对 Deployment、ReplicaSet 和 Pod 的详细解释以及它们之间的关系。 Deployment&#xff08;部署&#xff09; Deploy…

js教程(12)——本地储存

一、介绍 前端本地存储是指在浏览器中存储数据的机制&#xff0c;它允许前端开发者将数据保存在用户的浏览器中&#xff0c;以便在用户下次访问网站时可以使用这些数据。 前端本地存储有以下几种方式&#xff1a; Cookie&#xff1a;Cookie 是最早也是最常用的前端本地存储方式…

【Java设计模式】序:设计模式总体概述

目录 什么是设计模式设计模式的分类1 创建型模式1.1. 单例&#xff08;Singleton&#xff09;1.2 原型&#xff08;Prototype&#xff09;1.3 工厂方法&#xff08;FactoryMethod&#xff09;1.4 抽象工厂&#xff08;AbstractFactory&#xff09;1.5 建造者&#xff08;Builde…

31. 下一个排列 —— LeetCode (python) [PS: LeetCode 运行环境疑似出错]

# encoding utf-8 # 开发者&#xff1a;xxx # 开发时间&#xff1a; 20:26 # "Stay hungry&#xff0c;stay foolish."class Solution(object):def nextPermutation(self, nums):import itertoolsl len(nums)a tuple(nums)nums.sort()permutations_lst list(ite…