Ansible基本使用

news2024/11/8 9:10:10

目录

介绍

安装

inventory-主机清单

分组

子组

modules-模块

command

shell

script

file

copy

systemd

yum

 get_url

yum_repository

user

mount

cron


介绍

ansible是基于python开发的自动化运维工具。架构相对比较简单,仅需通过ssh连接客户机执行任务即可,客户端无需额外安装代理。

ansible有2中使用方式:

ad-hoc:相当于使用单条的命令行

playbook:类似于脚本,将多条命令组合成一个任务

安装

linux系统标准的yum源可能没有ansible软件包,可以使用epel源

yum install epel-release
yum install -y ansible

查看软件版本

[root@m01 yum.repos.d]# ansible --version
ansible 2.9.27
  config file = /etc/ansible/ansible.cfg
  configured module search path = [u'/root/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/lib/python2.7/site-packages/ansible
  executable location = /usr/bin/ansible
  python version = 2.7.5 (default, Aug  7 2019, 00:51:29) [GCC 4.8.5 20150623 (Red Hat 4.8.5-39)]

建议先修改2条默认配置,在/etc/ansible/ansible.cfg 去掉两行的注释

#关闭主机验证
host_key_checking = False
#开启ansible日志
log_path = /var/log/ansible.log

inventory-主机清单

主机清单中明确了需要控制的主机,ansible执行任务,必须要先读取主机清单文件,默认读取/etc/ansible/hosts文件。

使用ansible时,主控端到被控端提前做好ssh免密登录,如何做免密请参考我的另一篇博客。

ssh免密登录-CSDN博客文章浏览阅读262次,点赞3次,收藏5次。ssh免密设置https://blog.csdn.net/wangweinan_5566/article/details/143287669

分组

每个分组中可以多个主机,如果主机没有做免密,也可以在文件中指定用户、密码,但是不推荐该方式。

[web]    #分组名
172.16.1.7    #主机ip

[nfs]
172.16.1.31 ansible_user=root ansible_password=2 ansible_port=22

子组

[data:children]    #子组名:children  children关键字
nfs    #分组名
backup
db

初步使用ansible

[root@m01 ansible]# ansible data -m ping
172.16.1.31 | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python"
    },
    "changed": false,
    "ping": "pong"
}
172.16.1.41 | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python"
    },
    "changed": false,
    "ping": "pong"
}
172.16.1.51 | UNREACHABLE! => {
    "changed": false,
    "msg": "Failed to connect to the host via ssh: ssh: connect to host 172.16.1.51 port 22: No route to host",
    "unreachable": true
}

modules-模块

相当于linux中的各种命令,ansible有好几百个模块,需要自己慢慢熟悉,本次会介绍几个常用的模块。

ad-hoc使用格式:

ansible 主机清单 -m 模块 -a 模块中的选项

        -i:主机清单

        -m:模块

        -a:模块选项

查看模块帮助:

ansible-doc -s 模块名

command

ansible默认模块,该模块相当于linux命令行,但是不支持特殊符号如:*、|等,只适合执行简单命令。

[root@m01 ~]# ansible all -m command -a 'hostname'
172.16.1.7 | CHANGED | rc=0 >>
web01
172.16.1.31 | CHANGED | rc=0 >>
nfs01
172.16.1.41 | CHANGED | rc=0 >>
backup

shell

与command模块类似,但是该模块支持特殊符号。

[root@m01 ~]# ansible all -m shell -a 'rm -rf  /tmp/*'
[WARNING]: Consider using the file module with state=absent rather than running 'rm'.  If you
need to use command because file is insufficient you can add 'warn: false' to this command
task or set 'command_warnings=False' in ansible.cfg to get rid of this message.
172.16.1.31 | CHANGED | rc=0 >>

172.16.1.41 | CHANGED | rc=0 >>

172.16.1.7 | CHANGED | rc=0 >>

同样的执行命令,在使用command模块时,不会生效。

script

ansible将本机上的脚本文件下发到被控端并运行。

先分发文件,在运行脚本运行完后会删除脚本文件。

ansible all -m script -a '~/script-test.sh'

file

管理文件、管理目录、管理软链接

选项:

path:文件

src:源文件

state:状态

        state=directory 创建目录

        state=file(默认) 更新文件,文件不存在则创建

        state=link 创建连接

        state=touch 创建文件

        state=absent 删除(递归删除)

mode:权限

owner:所有者

        group:所有组

创建文件:

ansible all -m file -a 'path=/opt/wang.txt state=touch'

 创建目录:

ansible all -m file -a 'path=/opt/a/b/c/d state=directory'

 创建软连接:

ansible all -m file -a 'path=/opt/hosts src=/etc/hosts state=link'

删除文件:

ansible all -m file -a 'path=/opt/hosts src=/etc/hosts state=link'

copy

scp方式发送文件到被管理端

选项:

src:源文件

dest:目标文件

backup:目标文件存在,则备份

owner:所有者

group:所有组

传输文件:

ansible all -m copy -a 'src=/etc/hosts dest=/etc/hosts backup=yes'

systemd

相当于systemctl命令,管理服务

选项:

name:服务名换

enabled:开机启动

        yes

        no

state:服务状态

        started

        stopped

        reloaded

        restarted

daemon-reload:加载对应的服务管理配置文件

        yes

        no

启动crond服务并开机自启:

ansible all -m systemd -a 'name=crond state=started enabled=yes'

yum

包含yum/apt命令

选项:

name:软件包名,指定过个","分割

state:

        installed/present 安装

        removed/absent 删除

lastest 安装或更新

update_cache:缓存

        yes

        no

安装软件:

ansible all -m yum -a 'name=htop,tree,lrzsz state=installed'

 get_url

下载文件,相当于wget

选项:

url:下载地址

dest:下载目录

ansible all -m get_url -a 'url=https://mirrors.aliyun.com/zabbix/zabbix/6.0/rhel/7/x86_64/zabbix-agent2-6.0.13-release1.el7.x86_64.rpm dest=/tmp'

yum_repository

下发yum源

提前写好,copy下发更直接

选项:

name:yum源中的名字 []

description:yum源中的注释 name

baseurl:yum源的下载地址 baseurl

enabled:yum源是否启用

gpgcheck:yum源是否验证

file:yum源文件的名字,自动加repo

下发nginx yum源文件:

ansible web -m yum_repository -a 'name=nginx description=nginx_repo baseurl=http://nginx.org/packages/centos/$releasever/$basearch/ enabled=yes gpgcheck=no file=nginx'

user

管理用户

选项:

name:用户名

uid:uid

group:用户组

shell:解释器

create_home:是否创建家目录

state:

        present 添加

        absent 删除

创建虚拟用户:

ansible all -m user -a 'name=www-ans uid=2000 shell=/sbin/nologin create_home=no state=present'

创建用户并设置密码:

ansible all -m user -a "name=wem password={{'1' | password_hash('sha512','wang')}} state=present"

password选项只能接收加密过后的密码

{{'1' | password_hash('sha512','wang')}}

1:密码

password_hash:加密插件

sha512:加密算法

wang:随机字符串

mount

mount挂载或修改/etc/fstab实现永久挂载

选项:

fstype:文件系统 xfs ext4 nfs

src:源地址(nfs)

path:挂载点

state:

        absent 卸载并修改fstab

        umounted 卸载不修改fstab

        present 仅修改fstab,不挂在

        mounted 挂载并修改fstab

        remounted 重新挂载

挂载nfs:

ansible web -m mount -a 'src=172.16.1.31:/data/ path=/data/ fstype=nfs state=mounted'

cron

管理定时任务,删除任务时只能删除通过ansible添加的定时任务。

选项:

name:名字(即注释)

minute:分钟

hour:小时

day:日期

month:月

week:周

job:指定的命令或脚本

state:

        present 添加

        absent 删除

ansible all -m cron -a 'name="sync time test" minute=*/2 job="/sbin/ntpdate ntp1.aliyun.com" state=present'

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

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

相关文章

HivisionIDPhoto Docker部署以及Springboot接口对接(AI证件照制作)

项目简介 项目以及官方文档地址 HivisionIDPhoto 旨在开发一种实用、系统性的证件照智能制作算法。 它利用一套完善的AI模型工作流程,实现对多种用户拍照场景的识别、抠图与证件照生成。 HivisionIDPhoto 可以做到: 轻量级抠图(纯离线&a…

DB-GPT系列(一):DB-GPT能帮你做什么?

DB-GPT是一个开源的AI原生数据应用开发框架(AI Native Data App Development framework with AWEL and Agents),围绕大模型提供灵活、可拓展的AI原生数据应用管理与开发能力,可以帮助企业快速构建、部署智能AI数据应用,通过智能数据分析、洞察…

整理了一些大模型的课程,非常详细,大模型零基础入门到精通,收藏我这一篇就够了

目前有多个科普类的大模型课程,这些课程涵盖了从基础理论到实际应用的各个方面。以下是一些主要的科普类大模型课程:复旦大学“大模型开发与赋能”专题讲习班:由复旦大学计算机学院邱锡鹏教授带来的《大模型科普讲解》课程,通过深…

Chromium 中profile browser 和WebContents三者之间的关系c++

一、prfile介绍: 1、浏览器默认启动会创建一个默认的profile在Default目录下。 C:\Users\Administrator\AppData\Local\Chromium\User Data\Default目录下 【与窗口绑定】 proflie与N个browser对象绑定。 2、用户新建一个账户会在User Data目录下新建一个prfol…

el-datepicker此刻按钮点击失效

文章目录 此刻按钮失效原因:使用了禁用未来日期解决办法:重写此刻按钮点击事件代码(包含禁用未来日期和时分秒的处理)框出主要代码(因为包含禁用日期功能)(取你所需) 此刻按钮失效原…

shodan3,vnc空密码批量连接,ip历史记录查找

shodan语法,count,honeyscore count 今天带大家继续学习shodan,今天会带大家学一学这个count命令,再学学其他小命令好其实关键命令也没那么多,就是很方便记忆一下就学会了这样子。 shodan count "/x03/x00/x00…

node和npm

背景(js) 1、为什么js能操作DOM和BOM? 原因:每个浏览器都内置了DOM、BOM这样的API函数 2、浏览器中的js运行环境? v8引擎:负责解析和执行js代码 内置API:由运行环境提供的特殊接口,只能在所…

【Eclipse系列】eclipse快捷键和设置

本文以4.24版本为例,详细介绍一下常用快捷键,以及如何设置 一、常用快捷键 1.1、代码注释 Ctrl / :注释或取消当前行。Ctrl Shift C:注释或取消当前行。Ctrl Shift / :注释多行。Ctrl Shift \ :取…

图解Redis 05 | Zset数据类型的原理及应用场景

介绍 Zset 类型(有序集合)与 Set 类型相比,增加了一个排序属性 score。对于有序集合 Zset,每个元素由两个部分组成:一个是元素的值,另一个是用于排序的分数 score。 有序集合继承了Set中成员唯一&#xff…

1D+洪水淹没制图软件+山洪径流模拟与洪水危险性评价技术及典型地区洪水淹没及损失分析

1. 软件原理简介: 基于洪水频率计算得到的设计洪水成果,通过水位流量关系将常见年遇洪水的洪峰流量转化为水位,进一步结合洪泛平原DEM数据,采用GIS水文分析方法计算洪泛平原内任一栅格的水流流程,耦合一维水力学模拟计…

树莓派4处理器超频指南

概述 在树莓派4的系列硬件中,处理器都是基于Broadcom BCM2711,内部具有4个ARM Cortex-A72和VideoCore VI。如果仔细看:树莓派4B开发板用的是BCM2711B0,主频为 1.5GHz;而Pi 400(Keyboard Computer&#xff…

【华为\荣耀、中兴、华三路由器IPV6设置】

华为\荣耀、中兴、华三路由器ipv6设置 华为\荣耀设置-路由器拨号情况下中兴设置-路由器拨号情况下华三设置-光猫拨号情况下(待续) 华为\荣耀设置-路由器拨号情况下 如图设置就行 中兴设置-路由器拨号情况下 中兴路由器有两个设置地方也是如图设置 …

浅析Android View绘制过程中的Surface

前言 在《浅析Android中View的测量布局流程》中我们对VSYNC信号到达App进程之后开启的View布局过程进行了分析,经过对整个App界面的View树进行遍历完成了测量和布局,确定了View的大小以及在屏幕中所处的位置。但是,如果想让用户在屏幕上看到…

免费送源码:Java+ssm+Springboot Springboot小型仪器公司生产管理系统 计算机毕业设计原创定制

摘 要 本论文主要论述了如何使用java语言开发一个Springboot小型仪器公司生产管理系统,本系统将严格按照软件开发流程进行各个阶段的工作,采用B/S架构,面向对象编程思想进行项目开发。在引言中,作者将论述小型仪器公司生产管理系统…

Java学习Day56:暴打舔狗!(SpringBoot)

1.springboot简介 核心能力:Spring容器、日志、自动配置AutoCongfiguration、Starters web应用的能力:MVC、嵌入式Web服务器 数据访问(持久化):关系型数据库、非关系型数据库 强大的整合其他技术的能力 只要是Java中牛逼的技术&#xff0c…

nascpolarssh

安装cpolarCpolar快速入门教程:群晖NAS系列 - cpolar 极点云官网 设置ssh: 然后:ssh tobecpolard.26.tcp.cpolar.top -p 12774即可进入 跳板机: 设置端口转向ssh -f -N -L 23:localhost:22 tobe192.168.31.44 ssh tobecpolard.26.tcp.cpola…

相关矩阵图——Python实现

import matplotlib.pyplot as plt import numpy as np# 创建一些正常分布的数据 mean [0, 0] cov [[1, 1], [1, 2]] x, y np.random.multivariate_normal(mean, cov, 3000).T# Set up the axes with gridspec fig plt.figure(figsize(6, 6)) grid plt.GridSpec(4, 4, hspa…

学习笔记:黑马程序员JavaWeb开发教程(2024.10.30)

5.3 请求响应-请求-简单参数 客户端使用postman实现,服务端通过idea,又两种请求方式,springboot的更加简洁方便 对于RequestParam,可以通过设置requiredflase来让参数不是必须传递的 在请求参数过多的时候,可以将请求参…

rabbitmq高级特性(2)TTL、死信/延迟队列、事务与消息分发

目录 1.TTL 1.1.设置消息过期时间 1.2.设置队列过期时间 2.死信队列 2.1.介绍 2.2.演示 3.延迟队列 3.1.模拟实现延迟队列 3.2.延迟队列插件 4.事务与消息分发 4.1.事务 4.2.消息分发 1.TTL 所谓的ttl,就是过期时间。对于rabbitmq,可以设置…

pip使用

pip全称pip install package,是python第三方包sitepackage管理的工具,安装,卸载第三方包。安装python时可以选择安装pip,或自己安装pip 查看pip是否安装:pip --version 安装pip :pip python -m pip install --upgrade…