Ansible的安装和部署

目录

1.Ansible的安装

2.构建Ansible清单 

直接书写受管主机名或ip

设定受管主机的组[组名称]

主机规格的范围化操作

指定其他清单文件

ansible命令指定清单的正则表达式

3.Ansible配置文件参数详解

配置文件的分类与优先级

常用配置参数

4.构建用户级Ansible操作环境


环境配置

主控机    ansible1    192.168.81.10
受控机    ansible2    192.168.81.11
               ansible3    192.168.81.12

1.Ansible的安装

yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm -y
yum install ansible -y

ansible的基本信息

/etc/ansible/ansible.conf        //全局配置文件,默认很少修改
/etc/ansible/hosts            //全局主机清单清单文件

2.构建Ansible清单 

清单就是 ansible 控制主机的列表

直接书写受管主机名或ip

每行一个

设定受管主机的组[组名称]

清单查看
ansible 清单中组名称 [-i 清单文件] --list-hosts
ansible ungrouped --list-hosts        //列出在Ansible inventory文件中未分组的所有主机
ansible all --list-hosts

单层清单

嵌套清单

主机规格的范围化操作

通过指定主机名称或 IP 的范围可以简化 Ansible 主机清单

指定其他清单文件

如上

ansible命令指定清单的正则表达式

*                       //所有//192.168.81.*//westos*:                       //逻辑或//westos1:linux//#172.25.254.100:172.25.254.200:&                      //逻辑与//westos1:&linux//主机即在westos1清单也在linux清单中:!                      //逻辑非//westos1:!linux//在westos1中不在linux中~                       //以关键字开头~(str1|str2)            //以条件1或者条件2开头

3.Ansible配置文件参数详解

ansible 清单中组名称 -m 模块 -u remote_user

配置文件的分类与优先级

/etc/ansible/ansible.cfg
基本配置文件 找不到其他配置文件此文件生效
~/.ansible.cfg
用户当前目录中没有 ansible.cfg 此文件生效
./ansible.cfg
优先级最高

常用配置参数

[default]
基本信息设定
inventory=
指定清单路径
remote_user=
在受管主机上登陆的用户名称 未指定使用当前用户
ask_pass=
是否提示输入 SSH 密码 如果公钥登陆设定为 false
library=
库文件存放目录
local_tmp=
本机临时命令执行目录
remote_tmp=
远程主机临时 py 命令文件存放目录
forks=
默认并发数量
host_key_checking=
第一次连接受管主机时是否要输入yes建立host_key
sudo_user=
默认 sudo 用户
ask_sudo_pass=
每次在受控主机执行 ansible 命令时是否询问 sudo 密码
module_name=
默认模块 默认使用 command 可以修改为 shell
log_path=
日志文件路径
[privilege_escalation]
身份信息设定
become=
连接后是否自动切换用户
become_method=
设定切换用户的方式 通常用 sudo
become_user=
在受管主机中切换到的用户 通常为 root
become_ask_pass
是否需要为 become_method 提示输入密码 默认为 false

4.构建用户级Ansible操作环境

cp id_rsa.pub authorized_keys //复制公钥

创建目录

ansible all -m file -a 'path=/root/.ssh state=directory owner=root group=root mode=0700' -k

复制公钥

ansible all -m copy -a 'dest=/root/.ssh/authorized_keys src=/rt/.ssh/authorized_keys owner=root group=root mode=0600' -k

测试

创建用户,修改密码,向所有的目标主机添加一个sudoer,让用户devops拥有root权限而不需要输入密码

ansible all -m shell -a 'useradd devops'
ansible all -m shell -a 'echo shg12345 | passwd --stdin devops'
ansible all -m shell -a 'echo "devops ALL=(ALL) NOPASSWD: ALL >> /etc/sudoers "'

向devops复制公钥

ansible all -m copy -a 'src=/root/.ssh/authorized_keys dest=/home/devops/.ssh owner=devops group=devops mode=0600'

修改权限

ansible all -m file -a 'path=/root/.ssh owner=devops group=devs mode=0700'

目录

ansible all -m file -a 'path=/home/devops/.ssh state=directory owner=devops group=devops mode=0700' -k

ansible all -m copy -a 'src=/root/.ssh/authorized_keys dest=/home/devops/.ssh owner=devops group=devops mode=0600' -k

su - devpos
cp /root/ansible/ansible.cfg /home/devpos/.ansible

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

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

相关文章

Spring面试题:(一)IoC,DI,AOP和BeanFactory,ApplicationContext

IoC,DI,AOP思想 IOC就是控制反转,是指创建对象的控制权的转移。以前创建对象的主动权和时机是由自己把控的,而现在这种权力转移到Spring容器中,并由容器根据配置文件去创建实例和管理各个实例之间的依赖关系。对象与对…

Java的单元测试Testng和mock

目录 单元测试重要性 TestNG TestNG官网介绍 TestNG教程 TestNG注解: TestNG配置注解实例

结构体和联合体嵌套访问

在JSON项目中,使用了联合体和结构体之间的嵌套,但是在访问内部的联合体和结构体的时候出现了问题,这篇文章作为记录,也希望能帮助遇到相同问题的好伙伴。 struct lept_value {union {struct str{char *s;size_t len;};double n;}…

【系统架构】架构风格专题

目录 1、定义 2、通用架构风格分类 3、架构风格比较 4、示例:管道-过滤 VS 数据仓库)比较因素分析 1、定义 架构风格:描述某一特定应用领域中系统组织方式的惯用模式,反映了领域中众多系统所共有的结构和语义特性&#xff0c…

c++设计模式三:工厂模式

本文通过一个例子简单介绍简单工厂模式、工厂模式和抽象工厂模式。 1.简单工厂(静态) 假如我想换个手机,换什么手机呢?可以考虑苹果或者华为手机,那我们用简单工厂模式来实现这个功能: 我们关注的产品是手…

Lambda表达式与“::“方法引用 判空包装类Optional

函数式接口 函数式接口(Functional Interface)就是有且仅有一个抽象方法,但是可以有多个非抽象方法的接口。函数式接口可以被隐式转换为Lambda表达式。 Lambda表达式与"::"方法引用 方法引用主要是对Lambda表达式的一种优化&…

Scrum团队中的人

人永远是第一位的。 Scrum团队里有一个Scrum master、一个Product owner和若干个Developer。人数大概在10人左右,甚至更少。千万别在Scrum团队再搞什么小组,scrum团队就是最原子的团队了。我见过有些不专业的12人的scrum团队里,还安插了几个…

ubuntu部署个人网盘nextCloud使用docker-compose方式

概述 当下各大网盘的容量都是有限制的,而且xx云不开会员网速就拉跨。 所以就想搭建一个自己的盘,并且可以控制用户的权限分组; nextCloud就很合适 我这边都是自己用偶尔给其他人使用下,所以直接docker部署了。 ubuntu版本&…

Stream流基础使用

目录 Stream出现时间: 作用: 什么是 Stream? 生成流 forEach map filter limit

【2023.10.30练习】C语言-循环右移字符

计算机能力挑战初赛2020.19题 题目描述: 现要对一个由字符a-z和A-Z组成的字符串进行解密,已知加密规则是: 字符串中所有字符分别在大写或小写的字母表中被循环左移5位(fGh-->aBc), 输入:一个加密过的字符串&#…

3.6每日一题(线性方程求通解)

1、判断类型选择方法:发现以y为未知函数,以x为自变量,不符合我们学过的类型 2、此时有两种方法: (1)x 与 y 对调,此时 x 为未知函数,y 为自变量 (2)变量代换…

10.27~10.29数电第三次实验分析与问题

实验要求 分析 寄存器 D触发器有两个输出口,一个输入口,一个时钟信号,一个复位信号 同步异步就是说复位信号在不在always里 给它加一个load就成了一位寄存器, 寄存器堆 8个8位的寄存器堆,每个寄存器都有两读一写…

GBase8a SSL 配置

GBase8a SSL 配置 GBase8a MPP Cluster 支持 SSL 标准协议, SSL 协议是一种安全性更高的协议标准, 它加入了数字签名和数字证书来实现客户端和服务器的双向身份验证,保证了通信双方更加安全的数据传输。 配置客户端使用 SSL 安全连接的方式连…

计算机网络 期末复习方向

一,网络层 前三章我们解决了在具体物理网络,具体局域网上数据的传输过程,我们能实现在一个具体网络上把数据从A主机传到B主机,这件事情解决了。 引入问题:如果网络的局域网不考虑网络的扩展问题之后,我们…

【Leetcode】【简单】13. 罗马数字转整数

力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台备战技术面试?力扣提供海量技术面试资源,帮助你高效提升编程技能,轻松拿下世界 IT 名企 Dream Offer。https://leetcode.cn/problems/roman-to-integer/description/ …

在win10下,使用torchviz对深度学习网络模型进行可视化

目录 1. 安装 graphviz 和 torchviz 2.安装 graphviz.exe 3.实例测试 4.如果你的电脑还是无法画图,并且出现了下面的报错: 5.参考文章: 1. 安装 graphviz 和 torchviz 首先打开 Anaconda prompt 进入自己的 pytorch 环境(图中 pt 是我自…

servlet和SpringBoot两种方式分别获取Cookie和Session方式比较(带源码) —— 图文并茂 两种方式获取Header

目录 1、cookie和Session以及Header知识点 2、设置/获取 Cookie 3、设置/获取Session 4、设置/获取Header Cookie —— 客户端机制 Session —— 服务端机制 本篇博客主在用servlet和SpringBoot两种方式分别获取Session和Cookie,用来比较记忆与分析 1、cookie和…

MSQL系列(十二) Mysql实战-为什么索引要建立在被驱动表上

Mysql实战-left/right/inner join 使用详解 前面我们讲解了BTree的索引结构,也详细讲解下 left Join的底层驱动表 选择原理,那么今天我们来实战一下 left join,right join,inner join 等sql命令,看看到底如何用以及如…

Leetcode周赛369补题(3 / 3)

目录 1、找出数组的K-or值 - 位运算 模拟 2、数组的最小相等和 - 分情况讨论 3、使数组变美的最小增量运算数 - 动态规划dp 1、找出数组的K-or值 - 位运算 模拟 100111. 找出数组中的 K-or 值 思路: 根据范围,我们可以枚举0~30位,然后在…

【.net core】yisha框架bootstrapTreeTable组件实现行点击事件

YiSha.Web\YiSha.Admin.Web\wwwroot\lib\bootstrap.treetable\1.0\bootstrap-treetable.js文件中替换注册行点击选中事件代码 // 注册行点击选中事件var registerRowClickEvent function () {target.find("tbody").find("tr").unbind();target.find(&quo…