Ansible的安装及简单使用

## Ansible的安装及简单使用 ##
一.Ubuntu安装Ansible
sudo apt update
sudo apt install ansible
#使用以下命令检查安装是否成功:
ansible --version

image-20230817175908011

二.配置Ansible
#进入配置文件目录
cd /etc/ansible/
ls

image-20230817180056715

#文件含义
ansible.cfg #ansible配置文件,默认基本不用动,全注释
hosts #主机清单文件,存放被控端主机信息, 默认指定的hosts文件

修改ansible配置

vim ansible.cfg

image-20230817180736092

把第七十一行的配置,取消注释。这一行的作用是当 Ansible 连接到新创建的虚拟机时,不会要求手动验证主机密钥,而是自动跳过验证,从而简化自动化部署过程。

添加主机列表清单

vim hosts

image-20230817181012141

#含义
第一段 #被控端主机ip
ansible_ssh_user=root #ssh中setup模块的系统变量,指定为远程主机的用户为root
ansible_ssh_pass=123 #同上,为远程主机的root的密码

[web]:主机组的名称

1. 使用ping模块检测所有主机是否存活
#执行
ansible -i hosts web -m ping

#语句含义
-i hosts web #指定我们ansible工具针对的是 hosts主机文件中的 web为我们刚才配置文件中的主机组
-m ping #-m 指定使用的模块为ping,用于检测主机,返回pong

还要注意的是,此命令执行命令的路径是/etc/ansible,所以hosts可以不指定文件目录。如果在其他文件目录下执行命令则需要加上

该配置文件的根路径。ansible -i /etc/ansiblehosts web -m ping

image-20230817181651214

2.ansible命令执行的过程说明
  • ansible会先加载配置/etc/ansible/ansible.cfg文件
  • 然后加载模块文件(如上面的ping模块)
  • ansible会将我们执行的命令或模块,生成一个临时的python的脚本文件,将这个脚本文件发送到被控端的家目录/.ansible/tmp/目录下,并授权执行
  • 执行完成后返回执行结果,并清除临时文件
3. 常用模块
1. command 模块

这个模块就是平时使用命令的习惯,比如ls、cd、pwd、cp、mv操作等等都可以实现,但是要注意的是\command模块是不支持正则及特殊符号的

并且该模块是默认附加的,也就是说。即使你不加-m command 也可以使用

#查看web组所有主机下,/root目录内容
ansible -i hosts web -m command -a "ls /root"

#-a 是代表要执行的命令,相当于在所有主机上执行的

image-20230817182536488

image-20230817182705654

如图,效果是一样的。

2. shell 模块

shell模块和command模块类似,但是支持正则及特殊符号。

ansible -i /etc/ansible/hosts web -m shell -a "echo test > /home/1.txt"
ansible -i /etc/ansible/hosts web -m shell -a "cat /home/1.txt"

image-20230818093833606

3. copy模块

拷贝文件,从ansible主机上把文件发送到被控端主机上

ansible -i /etc/ansible/hosts web -m copy -a "src=/home/test_copy.txt dest=/home"
ansible -i /etc/ansible/hosts web -m shell -a "ls /home"

image-20230818095349602

image-20230818095926637

三.使用案例以及问题发现

给web组的主机安装docker

#配置安装环境
ansible -i /etc/ansible/hosts web -m shell -a "apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common"
#添加密钥
ansible -i /etc/ansible/hosts web -m shell -a "curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -"
#添加阿里云国内镜像仓库地址
ansible -i /etc/ansible/hosts web -m shell -a "add-apt-repository \"deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu \$(lsb_release -cs) stable\""
#更新软件源,列出可安装版本
ansible -i /etc/ansible/hosts web -m shell -a "apt-get update"
ansible -i /etc/ansible/hosts web -m shell -a "apt-cache madison docker-ce"
#安装指定版本docker
ansible -i /etc/ansible/hosts web -m command  -a "apt-get install -y docker-ce=5:20.10.13~3-0~ubuntu-focal docker-ce-cli=5:20.10.13~3-0~ubuntu-focal"
#重启并检查安装是否成功
ansible -i /etc/ansible/hosts web -m shell  -a "systemctl restart docker && docker --version"

问题:ansible在执行shell命令的时候,如果该命令在执行的时候出现提示键入y回车继续之类的情况时,会使该命令陷入死锁。

例:假如我这一步ansible -i /etc/ansible/hosts web -m command -a "apt-get install -y docker-ce=5:20.10.133-0ubuntu-focal docker-ce-cli=5:20.10.133-0ubuntu-focal"这里采用apt-get install -y,其目的是跳过软件安装时的所以确认步骤,默认为y。如果安装时采用,apt-get install去安装docker,则会因为无法键入y而是web主机组的apt-get install命令陷入死锁,从而导致无法更新和下载其他包

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

大学物理-实验篇——测量误差与数据处理(测量分类、误差、有效数字、逐差法)

目录 测量分类 测量次数角度 测量条件角度 误差 误差分类 系统误差 随机误差 异常值 误差描述 精密度(Precision) 正确度(Trueness) 准确度/精确度(Accuracy) 随机误差的处理 直接测量 算术…

使用HttpSession和过滤器实现一个简单的用户登录认证的功能

这篇文章分享一下怎么通过session结合过滤器来实现控制登录访问的功能,涉及的代码非常简单,通过session保存用户登录的信息,如果没有用户登录的话,会在过滤器中处理,重定向回登录页面。 创建一个springboot项目&#…

phpstudy上安装的composer和sockets扩展 步骤

1 安装composer 2 安装php sockets扩展 选择sockets扩展即可

三、Kubernetes(K8s)入门(一)

视频教程连接k8s 入门到微服务项目实战.xmind链接:https://pan.baidu.com/s/1q04euH7baE8eXNyG3kPPbA 提取码:jej4比较好的笔记 kubectl命令的语法如下: kubectl [command] [type] [name] [flags]comand:指定要对资源执行的操作…

几种常见的CSS三栏布局?介绍下粘性布局(sticky)?自适应布局?左边宽度固定,右边自适应?两种以上方式实现已知或者未知宽度的垂直水平居中?

几种常见的CSS三栏布局 流体布局 效果&#xff1a; 参考代码&#xff1a; <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1…

Vue3 使用 Teleport 封装 一个 Dialog

文章目录 什么是Teleport ?用法:1. 通过 to 指定传送的位置2. 禁用 teleport3. 共享一个 Teleport封装一个Dialog效果:什么是Teleport ? 是一个内置组件,它可以将一个组件内部的一部分模板“传送”到该组件的 DOM 结构外层的位置去。 简单的说,Telep

网络协议

一、 网络协议 1.1 网络模型 1.1.1 OSI七层模型 开放系统互联参考模型&#xff08;Open System Interconnect&#xff09;是国际标准化组织&#xff08;ISO&#xff09;制订的一个用于计算机或通信系统间互联的标准体系。采用七层结构&#xff0c;自下而上依次为&#xff1a;…

pytest安装失败,报错Could not find a version that satisfies the requirement pytest

问题 安装pytest失败&#xff0c;尝试使用的命令有 pip install pytest pip3 install pytest pip install -U pytest pip install pytest -i https://pypi.tuna.tsinghua.edu.cn/simple但是都会报同样的错&#xff1a; 解决方案 发现可能是挂了梯子的原因&#xff0c;关掉…

听GPT 讲Rust源代码--compiler(15)

File: rust/compiler/rustc_arena/src/lib.rs 在Rust源代码中&#xff0c;rustc_arena/src/lib.rs文件定义了TypedArena&#xff0c;ArenaChunk&#xff0c;DroplessArena和Arena结构体&#xff0c;以及一些与内存分配和容器操作相关的函数。 cold_path<F: FnOnce,drop,new,…

Simply简洁博客主题源码 | EmlogPro主题模版

Simply是一款简约风格的Emlog博客模板&#xff0c;响应式布局、界面简单大方&#xff0c;实用性强&#xff01; 支持夜间模式&#xff0c;采用localStorage存储配置。IOS系统下支持随系统自动切换浅/深色模式。 文章页支持显示文章字数及阅读时间。 支持http/https 响应式主…

计算机进入BIOS - Win/Linux

计算机进入BIOS - Win/Linux 快捷键方法&#xff08;通用&#xff09;Win系统方法Linux系统方法 快捷键方法&#xff08;通用&#xff09; 此方法为通用方法&#xff0c;适用于任何型号的计算机&#xff0c;包括台式机和笔记本&#xff0c;也包括Win系统和Linux系统。 进入BI…

package-info.java delete

package-info.java delete

解决Gitee每次push都需要输入用户名和密码

其实很简单&#xff0c;只需要使用命令 git config --global credential.helper store 在你下次push时只需要再输入一次用户名和密码&#xff0c;电脑就会保存下来&#xff0c;之后就无需进行输入了。

宏基因组序列分析工具EukRep

文章&#xff1a;Genome-reconstruction for eukaryotes from complex natural microbial communities | bioRxiv 仓库&#xff1a;patrickwest/EukRep: Classification of Eukaryotic and Prokaryotic sequences from metagenomic datasets (github.com) 推荐使用conda进行安…

揭开 JavaScript 作用域的神秘面纱(上)

&#x1f90d; 前端开发工程师&#xff08;主业&#xff09;、技术博主&#xff08;副业&#xff09;、已过CET6 &#x1f368; 阿珊和她的猫_CSDN个人主页 &#x1f560; 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 &#x1f35a; 蓝桥云课签约作者、已在蓝桥云…

Mac 安装Nginx教程

Nginx官网 Nginx官网英文 1.在终端输入brew search nginx 命令检查nginx是否安装了 2. 安装命令&#xff1a;brew install nginx 3. 查看Nginx信息命令brew info nginx 4. 启动 nginx方式&#xff1a;在终端里输入 nginx 5.查看 nginx 是否启动成功 在浏览器中访问http://l…

通过使用别名让 SQL 更简短-数据库教程shulanxt.com-帆软软件有限公司

MySQL视频教程导航 https://www.shulanxt.com/database/mysqlvideo/p1 SQL 别名 SQL 别名 通过使用 SQL&#xff0c;可以为表名称或列名称指定别名。 基本上&#xff0c;创建别名是为了让列名称的可读性更强。 列的 SQL 别名语法 SELECT column_name AS alias_name FROM …

【java】期末复习知识点

简单不先于复杂&#xff0c;而是在复杂之后。 文章目录 填空题封装包主类开发过程的改变interfaceabstract class访问控制关键字继承多态object 类Java I/O(输入/输出)异常线程和进程创建线程的两种基本方法 编程题Hello World编写Swing程序&#xff0c;显示一个空白窗口 填空题…

Huggy Lingo: 利用机器学习改进 Hugging Face Hub 上的语言元数据

太长不看版: Hub 上有不少数据集没有语言元数据&#xff0c;我们用机器学习来检测其语言&#xff0c;并使用 librarian-bots 自动向这些数据集提 PR 以添加其语言元数据。 Hugging Face Hub 已成为社区共享机器学习模型、数据集以及应用的存储库。随着 Hub 上的数据集越来越多&…

【AI视野·今日Sound 声学论文速览 第三十八期】Mon, 1 Jan 2024

AI视野今日CS.Sound 声学论文速览 Mon, 1 Jan 2024 Totally 5 papers &#x1f449;上期速览✈更多精彩请移步主页 Daily Sound Papers The Arrow of Time in Music -- Revisiting the Temporal Structure of Music with Distinguishability and Unique Orientability as the …