ansible基础用法

news/2024/7/8 11:38:03 标签: 运维

一、环境介绍

操作系统主机IP角色主机名
centos7.5192.168.1.18ansible-servernode2
centos7.5192.168.1.19ansible-clientnode3

二、安装epel yum源

1.下载epel yum源

yum -y install epel-release
[root@node2 ~]# yum list |grep ^ansible
ansible.noarch                              2.9.16-1.el7               epel     
ansible-doc.noarch                          2.9.16-1.el7               epel     
ansible-inventory-grapher.noarch            2.4.4-1.el7                epel     
ansible-lint.noarch                         3.5.1-1.el7                epel     
ansible-openstack-modules.noarch            0-20140902git79d751a.el7   epel     
ansible-python3.noarch                      2.9.16-1.el7               epel     
ansible-review.noarch                       0.13.4-1.el7               epel

2.安装ansble

[root@node2 ~]# yum -y install ansible

3.查看版本

[root@node2 ~]# rpm -qa |grep ansible
ansible-2.9.27-1.el7.noarch

4.配置密钥对通信

ansible默认用ssh方式通信,这里服务端与客户端之间使用密钥对通信

4.1.在服务端创建密钥(node2)
[root@node2 ~]# ssh-keygen  -t rsa

#讲公钥传递到被管理机上
[root@node2 ~]# ssh-copy-id -i .ssh/id_rsa.pub root@192.168.1.19
4.2.在客户端查看密钥
[root@node3 ~]# cat .ssh/authorized_keys 
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCmPE7vBP4hA249aZ0FxQdDnqRAzIbnAO7ZEfS44KNoaiFTD9GSpFGXu53rYJteJ8OKe5EHKx47SoYtgRKK3fdV5u9qujSW4cn
xCalqEd7UXCcKZgq3Qqz+XT3/tLDF5c7R20dxKrAs6V381kZ+kbFhdZyHPcuHBTV4k0UjHQ0s1zBRWGzfLMvBNmswj8mVOMw2QH95DJUrW8ukoeuPqPqEc7uXnQKkRkLArwceYuw21jFXb5Cl2gsSfKndplu7Xx9NUhk+jiofZ9A0BLGhr7jUEs5hDqpea199XrfTG1nRcTXrbIG/+malt+bKz5hFDmHHYtzPiIr3JO8TsJ1aj/xl root@node2

4.3.连接测试

连接成功,没有要求连接时输入密码。

[root@node2 ~]# ssh 192.168.1.19
Last login: Sat Jun 29 17:42:11 2024 from 192.168.1.18
[root@node3 ~]# 

四、基本配置

1.添加被管理机

1.1 语法1:

添加多个并且IP不连续的主机组

[root@node2 ansible]# cat hosts 
[web]
192.168.1.19
192.168.1.20

1.2 语法2:

添加多个并且IP连续的主机组. 这里backend主机组的范围是192.168.1.30-35

[root@node2 ansible]# cat hosts 
[backend]
192.168.1.[30:35]

2.基础语法

2.1 ansible

ansible是执行命令的主要命令

ansible 主机组 -m 指定模块 -a 参数

2.2 ansible-doc

ansible-doc是查看模块帮助的主要命令。-l列出所有模块

[root@node2 ~]# ansible-doc -l |wc -l
3387

查看某个模块说明

#查看ping模块的详细说明
[root@node2 ~]# ansible-doc ping

2.3 查看所有主机

[root@node2 ansible]# ansible all --list
  hosts (8):
    192.168.1.19
    192.168.1.20
    192.168.1.30
    192.168.1.31
    192.168.1.32
    192.168.1.33
    192.168.1.34
    192.168.1.35

2.4 查看某个主机组的主机

[root@node2 ansible]# ansible backend --list
  hosts (6):
    192.168.1.30
    192.168.1.31
    192.168.1.32
    192.168.1.33
    192.168.1.34
    192.168.1.35

3.测试通信

[root@node2 ~]# ansible web -m ping
192.168.1.107 | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python"
    }, 
    "changed": false, 
    "ping": "pong"
}

说明已经通信成功

五、常用模块

1.command模块

默认模块,在远程主机上执行命令,也即使说不使用-m指定模块 默认使用的就是command模块

[root@node2 ~]# ansible web -a  'ls'
192.168.1.107 | CHANGED | rc=0 >>
anaconda-ks.cfg
initial-setup-ks.cfg

command模块是有一些局限性的,有些shell命令是执行不了的

2.shell模块

shell模块比command对shell命令的支持会稍微好一些。可以讲默认模块改为shell

[root@node2 ~]# vim /etc/ansible/ansible.cfg 
module_name = shell

批量修改root登录密码

[root@node2 ~]# ansible web -a "echo "123456" |passwd --stdin root"

3.script脚本模块

功能:在远程主机上运行服务器上的脚本,运维人员无需手动将脚本复制到客户端,ansible会自动将脚本推送到客户端,执行完后会自定删除客户端的脚本。

3.1 创建测试脚本

在ansiable端编写测试脚本,内容如下

[root@node2 ~]# cat test.sh 
awk -F: '{if(NR <=10){print $1}}' /etc/passwd

3.2 执行脚本

[root@node2 ~]# ansible web -m script -a '/root/test.sh'
192.168.1.19 | CHANGED => {
    "changed": true, 
    "rc": 0, 
    "stderr": "Shared connection to 192.168.1.19 closed.\r\n", 
    "stderr_lines": [
        "Shared connection to 192.168.1.19 closed."
    ], 
    "stdout": "root\r\nbin\r\ndaemon\r\nadm\r\nlp\r\nsync\r\nshutdown\r\nhalt\r\nmail\r\noperator\r\n", 
    "stdout_lines": [
        "root", 
        "bin", 
        "daemon", 
        "adm", 
        "lp", 
        "sync", 
        "shutdown", 
        "halt", 
        "mail", 
        "operator"
    ]
}

4.copy模块

将服务端的文件下发到客户端

ansible web -m copy -a 'src=/root/test.sh dest=/root'

http://www.niftyadmin.cn/n/5537161.html

相关文章

10种有效提高电子设备可靠性的PCB散热技术

在现代电子领域&#xff0c;随着器件尺寸的不断缩小和性能的不断提高&#xff0c;热管理问题日益凸显&#xff0c;不容忽视。电子设备在运行过程中产生的热量&#xff0c;如果处理不当&#xff0c;散发不了&#xff0c;就会像潜移默化的威胁一样&#xff0c;悄无声息地危及设备…

devc++跑酷小游戏4.1.5

导航&#xff1a; Dev-c跑酷小游戏 1.0.0 devc跑酷小游戏1.2.5 devc跑酷游戏1.2.6 devc跑酷游戏2.0.0 devc跑酷游戏2.0.1 devc跑酷游戏2.4.0 devc跑酷小游戏3.5.0 devc小游戏3.8.5 devc跑酷小游戏4.0.0 更新内容: 也没更新多少&#xff0c;改了界面颜色和按钮&#…

Zabbix触发器

目录 触发器基础概念 创建和管理触发器 示例 定义一个触发器 在 Zabbix 中&#xff0c;触发器&#xff08;Trigger&#xff09;用于定义在监控数据满足特定条件时触发警报或动作。触发器是实现监控告警和自动响应的核心组件之一。以下是关于 Zabbix 触发器的详细解释和用法…

29、php实现和为S的两个数字(含源码)

题目&#xff1a;php 实现 和为S的两个数字 描述&#xff1a; 输入一个递增排序的数组和一个数字S&#xff0c;在数组中查找两个数&#xff0c; 是的他们的和正好是S&#xff0c;如果有多对数字的和等于S&#xff0c;输出两个数的乘积最小的。 输出描述&#xff1a; 对应每个测…

【区块链+基础设施】国家健康医疗大数据科创平台 | FISCO BCOS应用案例

在医疗领域&#xff0c;疾病数据合法合规共享是亟待解决的难题。一方面&#xff0c;当一家医院对患者实施治疗后&#xff0c;若患者转到其 他医院就医&#xff0c;该医院就无法判断诊疗手段是否有效。另一方面&#xff0c;医疗数据属于个人敏感数据&#xff0c;一旦被泄露或被恶…

httpclient访问https请求报错处理

C#通过httpclient调用https请求时&#xff0c;报错 错误信息为&#xff1a;The remote certificate is invalid according to the validation procedure 该错误是由于使用httpclient访问不合法的https站点导致出现的异常。 处理代码如下 public static string HttpPostWithT…

【分布式系统五】监控平台Zabbix实际监控运用(命令+截图详细版)

目录 一.Zabbix 监控 Windows 1.安装zabbix 2.Web 页面添加主机&#xff0c;关联模板 二.Zabbix 监控 Java 应用 1.安装tomcat 2.服务端安装 zabbix-java-gateway 3.Web 页面添加主机&#xff0c;关联模板 三.Zabbix 监控 SNMP 1.服务端安装 snmp 监控程序 2.修改 sn…

TPS54331 带载输出电压不稳定

TPS54331 带载输出电压不稳定 一、问题概述 TPS54331电源芯片&#xff0c;搭建DC12V转DC5V供电回路。TPS54331芯片外围电路是按照官网给的原理图搭建的&#xff0c;如下图1所示&#xff0c;但是在外围电路器件的布局上没有按照官网器件位置布局&#xff0c;如下图2所示&#x…