ansible基础使用--实战记录

**场景:**在局域网或者允许公网访问的集群、数量较多的主机,便捷部署各种环境、监控等。

此篇文章暂不涉及使用ansible-playbook,有时间再记录yaml文件的基本使用。

bash 复制代码
# centos安装:
yum install ansible -y

# ubunt安装:
apt -y install ansible

安装后配置文件路径:/etc/ansible/

/etc/ansible/host配置例子# 说明:

bash 复制代码
[minio]   # 自定义的组名
192.168.106.100    # 组内成员ip
192.168.106.101
192.168.106.102
192.168.106.103

[minio:vars]    # 指定组的参数
ansible_ssh_user=minio    # 相同的账号密码
ansible_ssh_pass=AAA123    # 相同的密码认证
ansible_python_interpreter=/usr/bin/python3    # 在提示未找到python的情况下指定python路径

[test]
192.168.1.1 ansible_ssh_user=root ansible_ssh_pass=111    # 指定的账号密码
192.168.1.2 ansible_ssh_user=root ansible_ssh_pass=222    # 指定的账号密码
192.168.1.3 ansible_ssh_user=root ansible_ssh_pass=333    # 指定的账号密码

⚠️可能报错一:被控方python环境找不到

**解决方案:**需要配置ansible_python_interpreter指定python路径,或者配置被控方的python系统环境

bash 复制代码
# 具体报错信息
"changed": false,
"module_stderr": "Shared connection to 192.168.106.100 closed.\r\n",
"module_stdout": "/bin/sh: 1: /usr/bin/python: not found\r\n",
"msg": "MODULE FAILURE",
"rc": 127

⚠️可能报错二:通过密码认证时提示需要安装sshpass

bash 复制代码
# 报错提示
you must install the sshpass program

**解决方案:**安装sshpass

bash 复制代码
centos:yum -y install sshpass

ubuntu:apt -y install sshpass

首次使用登录建议配置,二选一即可:

**第一种:**本地先SSH登录一下被控设备,下次ansible 就可以正常操作了,设备数量多就比较麻烦

**第二种:**设置参数为不检查key

bash 复制代码
vim /etc/ansible/ansible.cfg
在文件中进行搜索定位到 :/host_key_checking 
修改前:
#uncomment this to disable SSH key host checking 
#host_key_checking = False 
修改后: 
#uncomment this to disable SSH key host checking 
host_key_checking = False

常用模块命令:

bash 复制代码
# 确认与主机连通性
ansible all -m ping
ansible minio -m ping
# 查看分组内主机
ansible minio --list-hosts
# shell模块,个人使用最多的模块
ansible minio -m shell -a 'echo $HOSTNAME'
# 远程执行本地脚本
ansible all -m script -a "/home/test.sh"
# 复制本地文件到远端,同时可指定覆盖备份、权限、属主
ansible all -m copy -a 'src=2024-05-22.txt dest=/home/2024-05-22.txt backup=true'
#生成内容到远端
ansible all -m copy -a 'content=YouAreTheAppleOfMyEye\ne dest=/home/Good.txt'
# 管理服务、打开服务、并设置开机启动
# name (必须):指定要管理的服务名称
# enabled (可选):控制服务是否开机启动(自动启动)yes或true | no或false
# state (可选):控制服务的状态:started:启动服务 | stopped:停止服务 | restarted:重新启动服务 | reloaded:重新加载服务
ansible test -m service -a 'name=httpd enabled=true state=started'
#重启httpd服务,stop与start之间间隔3秒
ansible test -m service -a "name=httpd state=restarted sleep=3"
#重启网卡
ansible test -m service -a "name=network state=restarted args=ens33"
相关推荐
c++逐梦人8 分钟前
Linux生产者消费者模型
linux
Yolo566Q29 分钟前
从机理到实践告别“黑箱”模拟:OpenGeoSys(OGS6)多物理场THMC 全耦合建模与Python自动化分析
运维·自动化
网络安全许木30 分钟前
自学渗透测试第16天(Linux文本处理进阶)
linux·运维·服务器·网络安全·渗透测试
Lugas Luo35 分钟前
车载录像存储性能模拟测试工具设计
linux·嵌入式硬件·测试工具
铅笔小新z43 分钟前
【Linux】进程控制(下)
linux·运维·chrome
企鹅的蚂蚁1 小时前
Ubuntu 22.04 终端进阶:Terminator 安装与快捷键完全手册
linux·运维·ubuntu
不会写程序的未来程序员1 小时前
nvm 安装教程:Node.js 版本管理全攻略 (Win/Mac/Linux) + .nvmrc 实战
linux·macos·node.js·前端开发·环境配置·nvm
黄焖鸡能干四碗1 小时前
网络安全风险评估报告(WORD版本)
大数据·运维·网络·人工智能·制造
跨境麦香鱼1 小时前
2026自动化抢鞋机器人:如何通过高并发代理提高成功率?
运维·网络·自动化
路由侠内网穿透1 小时前
本地部署开源发票管理系统 Invoice Ninja 并实现外部访问
运维·服务器·数据库·物联网·开源