Ansible的安装及简单使用

news/2024/7/7 19:09:49
## 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://lihuaxi.xjx100.cn/news/1939802.html

相关文章

透明OLED屏的稳定性:从技术角度及应用案例解析

在显示技术日新月异的今天,透明OLED屏以其独特的透明特性和出色的显示效果,吸引了众多关注。然而,对于这种新型技术的稳定性,人们难免会有所疑虑。作为一名专注于OLED技术研发的工程师,尼伽小编将从专业角度出发&#…

南某人:从工厂到品牌的华丽转身!

南某人,这个名字在中国的市场上已经响当当,但你知道吗?这个品牌其实并没有自己的工厂和门店。那么,他们是如何做到年收入高达40亿的呢? 起初,南某人和许多中国品牌一样,从生产保暖内衣起家。然…

嵌入式中的数据初始化

1. 数值类 变量初始化 整型、浮点型的变量可以在定义的同时进行初始化,一般初始化为 0. int num 0; float fnum 0.21f; double dnum 0.32; 2. 字符型 变量初始化 字符型变量也可在定义的同时进行初始化,一般初始化为 \0。 char ch \0; 3. 字符…

快递物流怎么寄最便宜?你一定要知道的5个方法 !

家人们,临近年关,大家的钱包是不是鼓鼓的了,难免的亲戚朋友之间会相互寄送一些东西,所以最近因为需要经常寄快递物流,小编所以特地整理了5个我们平时个人寄快递便宜的方法攻略,推荐第五个,实用干…

大数据情况下如何保证企业数据交换安全

数据交换是指在网络或其他方式下,不同主体按照规定的规则和标准实现数据的共享、传输和处理的过程。大数据时代的到来使得数据交换的重要性更为凸显,大数据带来了海量、多样、高速、低价值密度等特点,也带来了更多的价值挖掘和应用场景。 保障…

Ubuntu18.04 安装 qt 5.15.2

安装qt 1.下载 在线安装包 使用国内镜像源在线安装QT(2023.3.25更新)_qt国内镜像-CSDN博客 2.安装 注意:我安装时 勾选 Qt Design studio 会导致报错,直接不勾选。 Ubuntu 18.04 安装Qt5.15.2开发环境_ubuntu安装qt5.15.2-CSDN博客 3.配置

220.【2023年华为OD机试真题(C卷)】考勤信息(滑动窗口算法-JavaPythonC++JS实现)

🚀点击这里可直接跳转到本专栏,可查阅顶置最新的华为OD机试宝典~ 本专栏所有题目均包含优质解题思路,高质量解题代码(Java&Python&C++&JS分别实现),详细代码讲解,助你深入学习,深度掌握! 文章目录 一. 题目-考勤信息二.解题思路三.题解代码Python题解代码…

5.3 Android BCC环境搭建(eadb版 下)

四,BCC使用示例 这里以tcplife为例,来显示TCP会话的生命周期和吞吐量统计。 4.1 进入/bcc/tools目录 root@localhost:/bcc# cd tools/ root@localhost:/bcc/tools# ls CMakeLists.txt javacalls.sh rubystat_example.txt argdist.py javacalls_e…