Linux学习-Ansible(二)

基本配置
#主机清单文件
[root@harbor ansible]# cat hostlist
[web]
192.168.29.161
192.168.29.162
[es]
192.168.29.171
192.168.29.172
192.168.29.173
#查看所有被管理的主机
[root@harbor ansible]# ansible all --list-hostshosts (5):192.168.29.161192.168.29.162192.168.29.171192.168.29.172192.168.29.173
#查看web组中所有主机
[root@harbor ansible]# ansible web --list-hostshosts (2):192.168.29.161192.168.29.162
ansible远程管理方式
  • adhoc临时命令–>在命令行中执行管理命令
  • playbook剧本–>把管理任务用特定格式写到文件中
adhoc临时命令
  • 语法
ansible 主机或组列表 -m 模块 -a "参数"    # -a是可选的
ansible模块
#列出所有模块
[root@harbor ansible]# ansible-doc -l 
# 查看包含yum的模块名
[root@harbor ansible]# ansible-doc -l | grep yum
# 查看yum模块的帮助文档,按空格键向下翻页,按q退出
[root@harbor ansible]# ansible-doc yum
command模块
  • ansible默认模块,用于在远程主机上执行任意命令
  • command不支持shell特性,如管道、重定向
# 在所有被管主机上创建目录/tmp/demo
[root@harbor ansible]# ansible all -a "mkdir /tmp/demo"
# 查看we1的ip地址
[root@harbor ansible]# ansible web1 -a "ip a s"
[root@harbor ansible]# ansible web1 -a "ip a s | head"  # 报错
shell模块
  • 与command模块类似,但是支持shell特性,如管道、重定向
# 查看web1的ip地址,只显示前10行
[root@harbor ansible]# ansible web1 -m shell -a "ip a s | head"
script模块
# 在控制端创建脚本即可
[root@harbor ansible]# vim test.sh
#!/bin/bash
for user in user{1..5}
douseradd $userecho '123456' | passwd --stdin $user
done# 在webservers组的主机上执行脚本
[root@harbor ansible]# ansible webservers -m script -a "test.sh"
file模块
  • 可以创建文件、目录、链接等,还可以修改权限、属性等
  • 常用的选项:
    • path:指定文件路径
    • owner:设置文件所有者
    • group:设置文件所属组
    • state:状态。touch表示创建文件,directory表示创建目录,link表示创建软链接,absent表示删除
    • mode:设置权限
    • src:source的简写,源
    • dest:destination的简写,目标
#查看使用帮助
[root@harbor ansible]# ansible-doc file
... ...
EXAMPLES:- name: Change file ownership, group and permissions  # 忽略ansible.builtin.file:           # 模块名。以下是它的各种参数path: /etc/foo.conf           # 要修改的文件的路径owner: foo                    # 文件所有者group: foo                    # 文件的所有组mode: '0644'                  # 权限
... ...
# 在webservers组的主机上创建/tmp/file.txt
[root@harbor ansible]# ansible webservers -m file -a "path=/tmp/file.txt state=touch"   # touch是指如果文件不存在,则创建;如果存在则改变它的时间戳
# 在webservers组的主机上创建/tmp/demo目录
[root@harbor ansible]# ansible webservers -m file -a "path=/tmp/demo state=directory"
# 将webservers组的主机上/tmp/file.txt的属主改为sshd,属组改为adm,权限改为0777
[root@harbor ansible]# ansible webservers -m file -a "path=/tmp/file.txt owner=sshd group=adm mode='0777'"
[root@harbor ansible]# ansible webservers -a "ls -l /tmp/file.txt"
# 删除webservers组的主机上/tmp/file.txt
[root@harbor ansible]# ansible webservers -m file -a "path=/tmp/file.txt state=absent"    # absent英文缺席的、不存在的
# 删除webservers组的主机上/tmp/demo
[root@harbor ansible]# ansible webservers -m file -a "path=/tmp/demo state=absent"
# 在webservers组的主机上创建/etc/hosts的软链接,目标是/tmp/hosts.txt
[root@harbor ansible]# ansible webservers -m file -a "src=/etc/hosts dest=/tmp/hosts.txt state=link"
copy模块
  • 用于将文件从控制端拷贝到被控端
  • 常用选项:
    • src:源。控制端的文件路径
    • dest:目标。被控制端的文件路径
    • content:内容。需要写到文件中的内容
[root@harbor ansible]# echo "hello world" > hello.txt
# 将hello.txt拷贝到webservers主机的/root/
[root@harbor ansible]# ansible web-m copy -a "src=hello.txt dest=/root/"
# 在目标主机上创建/tmp/mytest.txt,内容是Hello World
[root@harbor ansible]# ansible web-m copy -a "content='Hello World' dest=/tmp/mytest.txt"
fetch模块
  • 与copy模块相反,copy是上传,fetch是下载
  • 常用选项:
    • src:源。被控制端的文件路径
    • dest:目标。控制端的文件路径
# 将webservers主机上的/etc/hostname下载到本地用户的家目录下
[root@harbor ansible]# ansible web -m fetch -a "src=/etc/hostname dest=~/"
#查看从远程主机上下载的文件
[root@harbor ansible]# tree /root
/root
├── 192.168.29.161
│   └── etc
│       └── hostname
├── 192.168.29.162
│   └── etc
│       └── hostname
lineinfile模块
  • 用于确保目标文件中有某一行内容
  • 常用选项:
    • path:待修改的文件路径
    • line:写入文件的一行内容
    • regexp:正则表达式,用于查找文件中的内容
#web组中的主机,/etc/issue中一定要有一行Hello World。如果该行不存在,则默认添加到文件结尾
[root@harbor ansible]# ansible web -m lineinfile -a "path=/etc/issue line='hello world'"
[root@web1 ~]# cat /etc/issue
\S
Kernel \r on an \m
hello world
# web组中的主机,把/etc/issue中有hello的行,替换成welcome to china
[root@harbor ansible]# ansible web -m lineinfile -a "path=/etc/issue line='welcome to china' regexp='hello'"
[root@web1 ~]# cat /etc/issue
\S
Kernel \r on an \m
welcome to china
replace模块
  • lineinfile会替换一行,replace可以替换关键词
  • 常用选项:
    • path:待修改的文件路径
    • replace:将正则表达式查到的内容,替换成replace的内容
    • regexp:正则表达式,用于查找文件中的内容
# 把web组中主机上/etc/issue文件中的china,替换成henan
[root@harbor ansible]# ansible web -m replace -a "path=/etc/issue replace='china' regexp='henan'"
[root@web1 ~]# cat /etc/issue
\S
Kernel \r on an \m
welcome to henan
user模块
  • 实现linux用户管理
  • 常用选项:
    • name:待创建的用户名
    • uid:用户ID
    • group:设置主组
    • groups:设置附加组
    • home:设置家目录
    • password:设置用户密码
    • state:状态。present表示创建,它是默认选项。absent表示删除
    • remove:删除家目录、邮箱等。值为yes或true都可以。
# 在web组中的主机上,创建edison用户
[root@harbor ansible]# ansible web -m user -a "name=edison"
[root@web1 ~]# cat /etc/passwd | grep edison
edison:x:1000:1000::/home/edison:/bin/bash
# 在web组中的主机上,创建dizzy用户,设置uid=1010,主组adm,附加组daemon,root,家目录/home/dizzy
[root@harbor ansible]# ansible web -m user -a "name=dizzy uid=1010 group=adm groups=daemon,root home=/home/dizzy"
# 设置water的密码是123456
# {{}}是固定格式,表示执行命令。password_hash是函数,sha512是加密算法,则password_hash函数将会把123456通过sha512加密变成zhangsan的密码
[root@harbor ansible]# ansible web -m user -a "name=water password={{'123456' | password_hash('sha512')}}"
#删除edison用户,不删除家目录
[root@harbor ansible]# ansible web -m user -a "name=edison state=absent"
[root@web1 ~]# ls /home
dizzy  edison  water
#删除water用户,同时删除家目录
[root@harbor ansible]# ansible web -m user -a "name=water state=absent remove=yes"
[root@web1 ~]# ls /home
dizzy  edison
group模块
  • 创建、删除组
  • 常用选项:
    • name:待创建的组名
    • gid:组的ID号
    • state:present表示创建,它是默认选项。absent表示删除
# 在web组中的主机上添加名为devops的组
[root@harbor ansible]# ansible web -m group -a "name=devops"
[root@web1 ~]# cat /etc/group | grep devops
devops:x:1000:
# 在web组中的主机上删除名为devops的组
[root@harbor ansible]# ansible web -m group -a "name=devops state=absent"

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

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

相关文章

CMS需求文档

CMS需求文档 文章目录 CMS需求文档一、单体(分布式)架构二、技术三、面向用户四、功能列表1.1.用户管理1.2.权限体系1.3.多站点1.4.模板管理1.5.媒体管理(资源库)1.6.内容组织(分类)1.7.内容创作(稿件库)1.8.内容发布1.9.全文检索1.10.内容词汇1.11.性能优化1.12.日志记录1…

华为OD机试真题E卷-计算网络信号(含题目描述+解题思路+代码解析)

最新华为OD机试考点合集:华为OD机试2024年真题题库(E卷+D卷+C卷)_华为od机试题库-CSDN博客 题目描述: 网络信号经过传递会逐层衰减,且遇到阻隔物无法直接穿透,在此情况下需要计算某个位置的网络信号值。注意:网络信号可以绕过阻隔物 array[m][n]的二维数组代表网格地图…

初始Linux 和 各种常见指令

目录 Linux背景 1. 发展史 Linux发展历史 1.历史 2. 开源 Linux下基本指令 01. ls 指令 02. pwd命令 03. cd 指令 04. touch指令 05.mkdir指令(重要): 06.rmdir指令 && rm 指令(重要): …

这项新技术让 AI 感知自己的情感——也感知你的情感

今天,位于纽约的新创公司Hume AI推出了一个全新的“共情语音界面”,使得可以在Anthropic、谷歌、Meta、Mistral以及OpenAI的大型语言模型中添加一系列情感表达的声音,以及对情感敏感的耳朵——这预示着一个时代的到来,届时AI助手可…

【Vue3】自动化路由配置:Vue3与unplugin-vue-router的完美结合

引言 在Vue3项目中,路由管理是构建复杂应用不可或缺的一部分。传统上,手动编写路由配置既繁琐又容易出错。本文将介绍如何利用unplugin-vue-router插件,实现Vue3项目的自动化路由配置,从而提升开发效率和准确性。 unplugin-vue-…

基于SpringBoot+Vue+MySQL的考研互助交流平台

系统展示 用户前台界面 管理员后台界面 系统背景 本文设计并实现了一个基于SpringBoot、Vue.js和MySQL的考研互助交流平台。该平台旨在为广大考研学子提供一个集资源共享、学习交流、经验分享、心理辅导等功能于一体的综合性在线社区。通过SpringBoot构建高效稳定的后端服务&am…

nnunetv2系列:2D实例分割数据集转换

nnunetv2系列:自定义2D实例分割数据集转换 这里主要参考官方源文件nnUNet/nnunetv2/dataset_conversion/Dataset120_RoadSegmentation.py,注释了一些不必要的操作。数据集下载链接: massachusetts-roads-dataset 重要提示: nnU-Net只能用于使用无损(或…

轻松实现游戏串流,内网穿透

一、部署Gemini Gemini使用教程 二、部署Moonlight 过程大概说一下,网上有太多太多moonlight的东西了 需要运行游戏的机器上安装GFE(GeForce Experience),登录并开启GAMESTREAM(游戏串流)功能 注&…

信息安全考点-1

信息安全基础知识考试通常涵盖多个方面,旨在测试考生对于信息安全基本概念、原则和技术的理解。以下是信息安全基础知识考试中常见的考点: 1. 信息安全基本概念 信息安全的定义信息安全的目标(机密性、完整性、可用性)信息安全管…

网络安全 L2 Introduction to Cryptography 密码学

Definitions 1. crypto - hidden/secret grafia - writing 2. “the science and study of secret writing” 3. Cryptography is the science of protecting data, which provides means of converting data into unreadable form, so that 1. the data cannot be ac…

vue + Element UI table动态合并单元格

一、功能需求 1、根据名称相同的合并工作阶段和主要任务合并这两列,但主要任务内容一样,但要考虑主要任务一样,但工作阶段不一样的情况。(枞向合并) 2、落实情况里的定量内容和定性内容值一样则合并。(横向…

情感支持与疏导:帮助自闭症家属走出困境

在自闭症儿童的康复旅程中,每一位家长都是最坚强的后盾,也是最需要关怀与支持的群体。他们面对的不仅是孩子成长道路上的重重挑战,更有自己内心世界的挣扎与煎熬。广州市星贝育园康复中心,作为一家专业的全托寄宿制儿童康复训练机…

docker的相关网络问题

下载docker时可以将yum源换为阿里云源 yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo docker的镜像源切换,找到配置文件/etc/docker/daemon.json 添加镜像源,镜像源可以去阿里云镜像服务拿地址 { …

【C++】模板/继承/多态

函数模板继承虚函数,静态绑定/动态绑定静态绑定/动态绑定如何解释多态抽象类多重继承面试题四种类型转换方式 函数模板 意义:对类型进行参数化 模板的实参推演:可以根据用户传入的实参类型,来推导出模板类型。 函数模板 不会参与编…

9.11 QT ( Day 4)

一、作业 1.Widget.h #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QTimerEvent> //定时器类 #include <QTime> #include <QtTextToSpeech> //文本转语音类QT_BEGIN_NAMESPACE namespace Ui { class Widget; } QT_END_NAMESPACEcl…

杨氏矩阵中查找某个数字是否存在(不能使用遍历)

杨氏矩阵&#xff1a; 有一个数字矩阵&#xff0c;矩阵的每行从左到右是递增的&#xff0c;矩阵从上到下是递增的 如图所示&#xff1a; i为行&#xff0c;j为列 如果要找9&#xff0c;先从arr【0】【2】处开始找&#xff0c;3<9,i,排除第一行&#xff0c;6<9,i,排除第…

C++:sort自动排序函数

在 C 中&#xff0c;std::sort 是一个用于对容器&#xff08;如数组、std::vector、std::deque 等&#xff09;中的元素进行排序的标准库算法。std::sort 函数定义在 <algorithm> 头文件中&#xff0c;提供了多种排序方法&#xff0c;包括默认排序和自定义排序。 基本用…

上海亚商投顾:沪指探底回升 华为产业链午后爆发

上海亚商投顾前言&#xff1a;无惧大盘涨跌&#xff0c;解密龙虎榜资金&#xff0c;跟踪一线游资和机构资金动向&#xff0c;识别短期热点和强势个股。 一.市场情绪 沪指昨日探底回升&#xff0c;深成指、创业板指盘中跌逾1%&#xff0c;午后集体拉升翻红。华为产业链午后走强…

可解释性机器学习的目标

为了解释比如决策树、随机森林的意义&#xff0c;我们首先应该定义可解释性的目标是什么。或者 说什么才是最好的可解释性的结果呢&#xff1f;很多人对于可解释性机器学习会有一个误解&#xff0c;觉得一 个好的可解释性就是要告诉我们整个模型在做什么事。我们要了解模型的一…

cell phone teardown 手机拆卸

tweezer 镊子 screwdriver 螺丝刀 opening tool 开口工具 repair 修理 battery 电池 rear panel 后盖 front and rear cameras 前后摄像头 volume button board 音量键线路板 headphone jack 耳机孔 a cracked screen 破裂屏 otherwise non-functional screen 其它坏屏 flex c…