Linux运维篇-ansible的使用

目录

  • ansible简介
  • ansible架构
    • 1、连接插件
    • 2、核心模块
    • 3、自定义模块
    • 4、插件
    • 5、剧本
    • 6、主机清单
  • ansible的执行过程
  • 安装Ansible
  • ansible的使用
    • ansible.cfg文件修改
    • 添加主机清单
      • 方式一
      • 方式二
      • 方式三
    • 测试主机清单连接

ansible简介

简单来说,ansible就是一个自动化运维工具。主要功能是批量系统配置、批量程序部署、批量运行命令等。
ansible是基于python开发,且工作原理简单,通过ssh连接客户机执行任务。ansible是基于模块运行的,它本身并不具备批量执行任务的能力。

ansible架构

1、连接插件

connection plugins用于连接主机 用来连接被管理端

2、核心模块

core modules连接主机实现操作,它依赖于具体的模块来做具体的事情

3、自定义模块

custom modules根据自己的需求编写具体的模块

4、插件

plugins完成模块功能的补充

5、剧本

playbook ansible的配置文件,将多个任务定义在剧本中,由ansible自动执行

6、主机清单

inventor定义ansible需要操作主机的范围

ansible是模块化的 它所有的操作都依赖于模块

在这里插入图片描述

ansible的执行过程

  1. Ansible读取playbook剧本,剧本中会记录哪些主机执行哪些任务。
  2. 首先Ansible通过主机清单inventory找到要执行的主机,然后调用具体的模块。
  3. 其次Ansible会通过连接插件连接对应的主机并发送对应的任务列表。
  4. 最后被管理的主机会将Ansible发送过来的任务解析为本地Shell命令执行。

安装Ansible

我的基础环境为centos7.9,需要配置yum源,和epel源,我这里选用的是阿里云。

首先删除系统原来的yum源配置文件,centos7的官方支持已过期且国内有网络访问限制,最好使用第三方源。
在这里插入图片描述
按照阿里云镜像站的说明,下载centos7版本的yum源文件
在这里插入图片描述
下载centos7版本的epel源文件
在这里插入图片描述
更新yum源配置和epel源配置
在这里插入图片描述有两个报错信息,但是没有影响,yum源和epel源都已经准备好了。
安装ansible非常简单,只需要
在这里插入图片描述等待任务完成即可。
ansible --version命令检查ansible的版本。
在这里插入图片描述

ansible 2.9.27config file = /etc/ansible/ansible.cfg    #配置文件configured module search path = [u'/root/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules']    # 模块目录ansible python module location = /usr/lib/python2.7/site-packages/ansible #python模块安装目录executable location = /usr/bin/ansible    #ansible命令python version = 2.7.5 (default, Oct 30 2020, 14:45:30) [GCC 4.8.5 20150623 (Red Hat 4.8.5-36)] #python版本

ansible的使用

ansible.cfg文件修改

# ansible <host-pattern> [options]
--version     #ansible版本信息
-v            #显示详细信息
-i            #主机清单文件路径,默认是在/etc/ansible/hosts (一般用临时的,除非清单临时使用一次)
-m            #使用的模块名称,默认使用command模块
-a            #使用的模块参数,模块的具体动作
-k            #提示输入ssh密码,而不使用基于ssh的秘钥认证
-C            #模拟执行测试,但不会真的执行(没用)
-T            #执行命令的超时

Ansible的本身配置文件只有一个,即ansible.cfg,Ansible安装好后它默认存放于/etc/ansible/目录下。

ansible.cfg配置文件可以存在于多个地方,Ansible读取配置文件的顺序依次是:

当前命令执行目录用户家目录下的.ansible.cfg/etc/ansible.cfg
先找到哪个就使用哪个的配置。其ansible.cfg配置的所有内容均可在命令行通过参数的形式传递或定义在Playbooks中。

[root@localhost ~]# cat /etc/ansible/ansible.cfg
#inventory      = /etc/ansible/hosts        #主机清单配置文件
#library        = /usr/share/my_modules/    #库文件存放目录
#remote_tmp     = ~/.ansible/tmp            #临时py文件存放在远程主机目录
#local_tmp      = ~/.ansible/tmp            #主机的临时执行目录
#forks          = 5                            #默认并发数(一般不改,不要设置太大,实际上串行就行了)
#sudo_user      = root                        #默认sudo用户(ansible执行的用户,一般使用root用户)
#ask_sudo_pass = True                        #每次执行是否询问sudo的ssh密码
#ask_pass      = True                        #每次执行是否询问ssh密码
#remote_port    = 22                        #远程主机端口(默认22,因为每台端口可能不同,在主机清单里配)
host_key_checking = False                    #跳过检查主机指纹(一定要打开!ssh连接就不用输入yes,否则卡在输yes上)
log_path = /var/log/ansible.log                #ansible日志(无所谓配不配,运行时报错会直接展示)#普通用户提权操作(我们用的是root账户,这个一般也用不上)
[privilege_escalation]
#become=True        #是不是开启
#become_method=sudo    #提权的命令
#become_user=root    #提权的用户
#become_ask_pass=False    #要不要认证密码

我想要在其他目录来修改ansible的配置文件,避免对原生的配置文件造成破坏。如果你没有这个需求,那么在/etc/ansible目录中修改配置文件也是一样的。
所以,cp -R /etc/ansible /root/
在这里插入图片描述
修改当前目录下的配置文件

inventory      = /root/ansible/hosts
roles_path    = /root/ansible/roles
host_key_checking = False

添加主机清单

在上一步,我修改了默认的主机清单配置文件位置,inventory = /root/ansible/hosts,所以,这里我的主机清单位置为 /root/ansible/hosts,如果没有修改,那就是默认的/etc/ansible/hosts

方式一

[root@localhost ~]# vim /root/ansible/hosts
#方式一:IP + 端口 + 用户 + 密码 (端口默认22,用户默认root,ansible_ssh_port和ansible_ssh_usr可以不写)
[web01]
10.0.0.7 ansible_ssh_port=22 ansible_ssh_usr=root ansible_ssh_pass='admin123'
10.0.0.8 ansible_ssh_port=22 ansible_ssh_usr=root ansible_ssh_pass='admin123'

方式二

这种方式下, 需要做ssh免密登录,相对于明文的密码来说,更加安全。

#1.生成密钥对
[root@localhost ~]# ssh-keygen#2.推送公钥
[root@localhost ~]# ssh-copy-id root@172.16.1.7
[root@localhost ~]# ssh-copy-id root@172.16.1.8
#方式二:ip
[root@localhost ~]# vim /root/ansible/hosts
[web01]
172.16.1.7
172.16.1.8
#方式二:主机名
[web01]web01web02

方式三

#方式三:主机组
[root@localhost ~]# vim /etc/ansible/hosts
[web_group]
web01
web02
[lb_group]
172.16.1.4 ansible_ssh_pass='admin123'
172.16.1.5 ansible_ssh_pass='admin123'

查看指定组的主机

[root@localhost ~]# ansible web_group --list-hosthosts (2):web01web02

查看配置文件所有组的主机

#all为内置变量,表示配在主机清单里的所有主机
[root@localhost ~]# ansible all --list-host    hosts (4):172.16.1.4172.16.1.5web01web02

这里还有个需要注意的是多组整合。

[root@m01 ~]# vim /etc/ansible/hosts
[web_group]
web01
web02
[ftp_group]
172.16.1.4 ansible_ssh_pass='admin123'
172.16.1.5 ansible_ssh_pass='admin123'
[db_group]
172.16.1.51 ansible_ssh_pass='admin123'
172.16.1.52 ansible_ssh_pass='admin123'#定义多组,整合web_group组合lb_group组
[nginx_group:children]    #如果不加:children,下面的组名会被当成主机名
web_group
ftp_group

查看多组整合的主机列表你就可以看出来他们之间的区别:

[root@localhost ~]# ansible nginx_group:children --list-host
[WARNING]: Could not match supplied host pattern, ignoring: childrenhosts (4):web01web02172.16.1.4172.16.1.5

测试主机清单连接

[root@localhost ~]# ansible 'web01' -m ping #代表仅'web01'组内的主机
[root@localhost ~]# ansible '*' -m ping    #*代表所有主机
[root@localhost ~]# ansible 'all' -m ping    #all代表所有主机
[root@localhost ~]# ansible 'web01,web02' -m ping    #支持逗号

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

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

相关文章

数学物理方法第五版梁昆淼课后答案详解PDF电子版

序言 梁昆淼《数学物理方法》第四版面世以来&#xff0c;随着学科的发展&#xff0c; 物理类各专业“数学物理方法”课程的教学要求与学时发生了变化。为了适应物理类人才培养的需要&#xff0c;在第四版的基础上&#xff0c; 根据多年的教学实践&#xff0c; 对本书进行了修订…

K8S部署

二进制搭建Kubernetes v1.20 k8s集群master01&#xff1a;192.168.10.80 kube-apiserver kube-controller-manager kube-scheduler etcd k8s集群master02&#xff1a;192.168.10.20 k8s集群node01&#xff1a;192.168.10.18 kubelet kube-proxy docker k8s集群node02…

数据导入导出

1.数据加载 - LOAD 语法 LOAD DATA [LOCAL] INPATH filepath [OVERWRITE] INTO TABLE tablename; 操作: 建表 CREATE TABLE myhive.test_load( dt string comment 时间&#xff08;时分秒&#xff09; , user_id string comment 用户 ID, word string comment 搜索词 , u…

Android compose 重建流程1

前言 本文是笔者学习Compose是如何自动触发UI刷新的笔记,可能缺乏一定可读性和教导性.(建议阅读参考文献更具启发性) 使用以下BOM作为研究环境. composeBom "2024.04.01" androidx-compose-bom { group "androidx.compose", name "compose-bom…

【linux】物理卷、卷组、逻辑卷

概述 初次了解物理卷、卷组和逻辑卷这些概念&#xff0c;大概理了下这三个概念之间的关系&#xff0c;只是一点皮毛&#xff0c;用于大致理解&#xff1a; 个人感觉很像虚拟化的过程&#xff0c;物理卷就相当于物理设备&#xff1b;卷组相当于把这些物理设备分组了&#xff1…

有效三角形的个数---双指针法

目录 一&#xff1a;题目 二&#xff1a;算法原理 三&#xff1a;编写代码 一&#xff1a;题目 题目链接&#xff1a;. - 力扣&#xff08;LeetCode&#xff09; 二&#xff1a;算法原理 三&#xff1a;编写代码 int triangleNumber(vector<int>& nums) {//1.优…

解锁PDF权限密码

目录 背景: 定义与功能&#xff1a; 过程&#xff1a; 主要功能&#xff1a; 使用方式&#xff1a; 使用限制&#xff1a; 注意事项&#xff1a; 总结&#xff1a; 背景: 前段时间自己设置了PDF文件的许可口令&#xff0c;忘了口令导致自己无法编辑内容等&#xff0c;这…

养宠家庭必备,双十一特辑——性价比高的宠物空气净化器推荐

对于养宠家庭来说&#xff0c;宠物空气净化器简直就是仅次于空调的人类最伟大发明。尤其是到了宠物疯狂掉毛的换毛季节&#xff0c;宠物空气净化器成为铲屎官们抵御满屋浮毛纷飞必不可少的清洁神器&#xff0c;除了价格有点高之外&#xff0c;可以说是没有什么缺点了。 养宠七年…

WEB前端使用标签制作网页

需要使用HTML的一些基本标签制作网页 基本代码如下: <!DOCTYPE html> <html><head><meta charset"utf-8"><title></title></head><body><form action"#" method"post" enctype"text/…

激活函数(sigmoid、tanh、ReLu)

1️⃣ 激活函数的作用 激活函数为神经网络引入非线性&#xff0c;如果没有激活函数&#xff0c;即使网络层数再多&#xff0c;也只能处理线性可分问题。 在机器学习中&#xff0c;线性可分问题指的是可以通过一条直线&#xff08;或高维空间的一个超平面&#xff09;将数据完全…

GS-SLAM Dense Visual SLAM with 3D Gaussian Splatt 论文阅读

项目主页 2024 CVPR (highlight) https://gs-slam.github.io/ 摘要 本文提出了一种基于3D Gaussian Splatting方法的视觉同步定位与地图构建方法。 与最近采用神经隐式表达的SLAM方法相比&#xff0c;本文的方法利用实时可微分泼溅渲染管道&#xff0c;显著加速了地图优化和…

Django学习- ORM基础操作_创建数据

ORM操作&#xff1a; 管理器对象&#xff1a; 创建数据&#xff1a; Django shell 想要操作模型对象&#xff0c;首先我们需要把它引进Django shell中 >>> from bookstore.models import Book >>> b1 Book.objects.create(titleAI, pub清华大学出版社, pr…

开挖 Domain - 前奏

WPF App 主机配置 Microsot.Extension.Hosting 一键启动&#xff08;配置文件、依赖注入&#xff0c;日志&#xff09; // App.xaml.cs 中定义 IHost private readonly IHost _host Host.CreateDefaultBuilder().ConfigureAppConfiguration(c > {_ c.SetBasePath(Envi…

电脑必备快捷键大全

#1024程序员节|征文# 小伙伴们&#xff01;想要提高学习效率&#xff0c;成为电脑高手吗&#xff1f;今天&#xff0c;我为大家整理了一份超实用的电脑快捷键清单&#xff01;无论是写论文、做PPT还是数据录入&#xff0c;这些快捷键都能帮你事半功倍&#xff01;快收藏起来吧&…

PDF.js的使用及其跨域问题解决

目录 一、PDF.js 简介 二、使用配置和步骤 1.引入PDF.js 2.加载PDF文件 3.渲染PDF页面 三、在Vue中使用PDF.js示例 1.安装PDF.js 2.在Vue组件中使用 四、在原生js中使用PDF.js示例 1.加载PDF文件并渲染页面 五、解决跨域问题 1.服务器配置 2.使用代理服务器 下面介…

编辑器、节点树、基础设置

目录 节点 查看当前节点拥有的属性 Position&#xff08; 父节点&#xff09; 保存 主场景 运行 编辑器操作 添加子节点 收藏节点 Sprite2D节点 控制节点是否可见 当父节点不可见&#xff0c;它的子节点也会不可见 基础编辑工具&#xff08;场景浏览器左上角&#x…

052_python基于Python高校岗位招聘和分析平台

目录 系统展示 开发背景 代码实现 项目案例 获取源码 博主介绍&#xff1a;CodeMentor毕业设计领航者、全网关注者30W群落&#xff0c;InfoQ特邀专栏作家、技术博客领航者、InfoQ新星培育计划导师、Web开发领域杰出贡献者&#xff0c;博客领航之星、开发者头条/腾讯云/AW…

Lesson10---list

Lesson10—list 第10章 c的list的使用和实现 文章目录 Lesson10---list前言一、list的初始化二、list的遍历1.迭代器2.范围for 三、list常用的内置函数1.sort&#xff08;慎用&#xff09;2.unique3.reverse4.merge5.splice 四、模拟实现1.基本框架2.构造函数3.push_back4. 遍…

PON架构(全光网络)

目前组网架构 世界上有一种最快的速度又是光&#xff0c;以前传统以太网络规划满足不了现在的需求。 有线网 无线网 全光网络方案 场景 全光网络分类 以太全光网络 PON&#xff08;Pas-sive-Optical Network 无源光网络&#xff09; 再典型的中大型高校网络中 推荐万兆入…

Java项目-基于springboot框架的原创歌曲分享系统项目实战(附源码+文档)

作者&#xff1a;计算机学长阿伟 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、ElementUI等&#xff0c;“文末源码”。 开发运行环境 开发语言&#xff1a;Java数据库&#xff1a;MySQL技术&#xff1a;SpringBoot、Vue、Mybaits Plus、ELementUI工具&#xff1a;IDEA/…