Ansible:模块1

Ansible:

远程操作主机功能

自动化运维(playbook 剧本 yaml)

是基于python开发的配置管理和应用部署工具。在自动化运维中,现在是一军突起。

Ansible能批量配置,部署,管理上千台主机。类似于xshell的一键输入的工具,不需要每次都切换主机进行操作。

只要有一台ansible的固定主机,就可以进行所有节点的操作。

不需要agent,客户端。

主协议一台主机上配置了ansible。

ansible是基于模块进行工作,只是提供了一种运行的架构,执行和辩证的是absible的模块来实现的。

copy

service

Ansible默认是通过ssh的密钥对来实现通信。(可以改)

Ansible的另一个特点,所有模块都是幂等性。

幂等性:指的是多次操作或者多次对协调资源的影响是一致的。

systemctl stop firewalld

systemctl stop firewalld

systemctl stop firewalld只要发现要停止的目标服务已经停止了,后续同样的停止操作,不会改变任何结果,什么也不做。

systemctl restart firewalld每一次操作都会先停再启动。不是幂等性

http get 幂等性

post 多次执行相同的post可能会创建多个相同的资源。不是幂等性

ansible的幂等性:决定了你可以放心大胆的实验,重复执行某个任务不会对结构生产任何影响(绝大多数情况)

Ansible的四大组件:

1,inventory 主机清单(主机组)定义ansible可以远程操作的服务器。

2,模块 13个模块(常用的)通过模块可以实现远程的配置和操作。

3,plugins 插件

4,playbook 剧本 (shell脚本 yaml格式)

Ansible的优缺点:

部署较为简单,注意在控制主机部署即可,被控制主机协议有shh和pyhon2.5以上版本。举办的linux都是自带的。ansible只能控制linux系统,windows不行。

基于模块工作,可以只要任意语言开发模块(二次开发。底层架构)

环境:

1,管理端:

2,被管理端:

备用:

要先安装epel源

yum install -y epel-release.noarch

yum install -y ansible

ansible.cfg:ansible的主配置文件,一般无需修改

hosts:主机组,声明可以被控制的主机

roles:公共角色目录

配置主机有两种方式:

1、直接声明主机的ip地址

2、主机名(/etc/hosts做映射)

名称只是一个标识,没有意义,不要用中文

vim hosts

配置密钥对验证

ssh-keygen -t rsa

ansible的命令格式:

ansible 组名/ip -m 模块名称 -a ‘参数列表(执行的命令)’

模块1:

command模块,在远程主机执行linux的命令,不支持管道符,不支持重定向输出。

要先执行到目标主机的命令

ansible 192.168.176.50 -m command -a 'date'

ansible 192.168.176.60 -m command -a 'date'

指定ip地址

在目标主机上不会显示执行命令但在日志会显示

再连接

sshpass -p '123' ssh-copy-id root@192.168.176.50

sshpass -p '123' ssh-copy-id root@192.168.176.60

指定执行组,也可以用组名,在组下的所有机器

ansible webservers -m command -a 'ls /opt'

也可以对所有:所有组中的所有机器

ansible all -m command -a 'ls /opt'

不加-m,不声明指定的模块,默认就是command模块。

常用参数:

chdir 先进入目录再执行命令

ansible all -m command -a 'chdir=/home ls'

creates:判断指定文件是否存在,如果存在,不执行后面的操作

ansible all -m command -a 'creates=/opt/123 ls /opt'

removes:判断指定的文件是否存在,如果存在,执行后续的命令。

ansible all -m command -a 'removes=/opt/123 ls /opt'

模块2:

shell模块,再远程主机现在命令,相当于在远程主机,支持管道符和重定向。

创建一个用户和密码

ansible 192.168.176.50 -m shell -a 'useradd test'

ansible 192.168.176.50 -m shell -a 'cat /etc/passwd'

ansible 192.168.176.50 -m shell -a 'echo 123456 | passwd --stdin test'

获取IP地址

ansible 192.168.176.50 -m shell -a 'echo $(ifconfig ens33 | awk "NR==2{print $2}")|cut -d " " -f2'

在ansible当中,多个引号之间要做隔离

多个shell命令执行,多个命令之间用&&连在一块,表示逻辑且

ansible 192.168.176.50 -m shell -a 'touch /opt/123 && echo 123 > /opt/123 && ls /opt && cat /opt/123'

ansible 192.168.176.50 -m shell -a 'touch /opt/123 && echo 456 > /opt/123 && cat /opt/123'

也可以用;符号。表示逻辑或

ansible 192.168.176.50 -m shell -a 'touch /opt/456 ; echo "cc正" > /opt/456 ; cat /opt/456'

前面的命令成不成功后面的都会执行。

远程运行脚本

指定主机上创建一个脚本,在脚本中写入一个内容 #!/bin/bash ifconfig ,然后运行这个脚本:

ansible 192.168.176.50 -m shell -a 'echo -e "#!/bin/bash\nifconfig" > /opt/test.sh && sh /opt/test.sh'

简单的加法

ansible 192.168.176.50 -m shell -a 'echo -e "#!/bin/bash\na=$((2+3))\necho $a" > /opt/test1.sh && sh /opt/test1.sh'

模块3 cron模块

远程给主机设置定时任务

两种状态:present 表示添加(默认就是添加,可以省略)

absent 表示移除。#absent在整个ansible的语法当中都表示移除的意思(删除)

分 时 日 月 周

分=minute

时=hour

日=day

月=month

周=weekday

job:任务执行的命令

name:任务计划的名称,可以不加。

192.168.176.50 -m cron -a 'minute="*/5" job="ls /opt" name="test1"'

查看远程主机的但是任务:

ansible 192.168.176.50 -a 'crontab -l'

ansible 192.168.176.50 -m cron -a 'minute="30" hour="8" day="1" month="9" job="ls /opt" name="test2"'

ansible 192.168.176.50 -m cron -a 'minute="30" hour="14" weekday="3" job="ls /opt"'

远程删除定时任务删除一定要加state=名称

有名字的

ansible 192.168.176.50 -m cron -a 'name=test2 state=absent'

没有名字的

ansible 192.168.176.50 -m cron -a 'name=None state=absent'

多个none,会一起删除。所以最好给名称,指名不要重复。

模块4:

user模块:用户管理模块

常用参数:

name 指定用户名,必须要有

state:present absent 创建用户可以不加present,删除一定要加absent

system=yes | no,标记用户是否是一个程序用户 只会指明uid为程序用户

uid:用户的唯一标识

group:用户的所在组

create_home=yes | no, 替换用户的家目录,不需要替换用户的家目录可以不写

password:创建用户的密码

comment:户的注释信息(可有可无)

remove=yes | no 当删除用户,加上remove=yes,删除用户的家目录 userdel-r。如果不需要删除家目录,可以写。

给远程主机添加用户:

ansible 192.168.176.50 -m user -a 'name=cc1 system=yes'

在创建用户时,虽然我声明了是一个程序用户,但是默认的登录shell如果没有额外的声明,还是默认的/bin/bash,uid会按照程序用户来指定。

如何正确声明:

ansible 192.168.176.50 -m user -a 'name=cc2 shell=/sbin/nologin'

使用ansible的user模块创建用户时,如果创建普通用户可以不加system=no,指定shell轮询可以不加,默认就是/bin/bash 如果创建的是程序用户,一定要声明system=yes,声明shell的类型 shell=/sbin/nologin。

也可以指定uid的方式,给用户分配一个uid,同时指定用户的家目录

ansible 192.168.176.50 -m user -a 'name=cc5 uid=1013 password=123456 home=/opt/test3'

改变用户家目录:

ansible 192.168.176.50 -m user -a 'name=cc5 home=/opt/test4 create_home=yes'

删除用户连家目录一并删除

ansible 192.168.176.50 -m user -a 'name=cc5 remove=yes state=absent'

group 模块:

用户组的管理模块

name 必须要有

system=yes | no,标记用户组中的用户是否是程序用户 只会指明uid为程序用户

gid 设置组的id

ansible 192.168.176.50 -m group -a 'name=chen gid=306 system=yes'

创建的是组,不是用户

在创建一个用户的时候,怎么添加到一个组中。

ansible 192.168.176.50 -m user -a 'name=cc uid=1011 group=chen'

ansible不使用交互式的命令。

如何删除组

ansible 192.168.176.50 -m group -a 'name=chen state=absent'

要先删除组用户,才能删除组。

ansible 192.168.176.50 -m user -a 'name=cc remove=yes state=absent'

ansible 192.168.176.50 -m group -a 'name=chen state=absent'

ping模块:

ansible all -m ping

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

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

相关文章

【Hadoop面试】HDFS读写流程

HDFS(Hadoop Distributed File System)是GFS的开源实现。 HDFS架构 HDFS是一个典型的主/备(Master/Slave)架构的分布式系统,由一个名字节点Namenode(Master) 多个数据节点Datanode(Slave)组成。其中Namenode提供元数…

黑豹程序员-axios+springmvc传递数组

问题 奇怪的现象,axios在往后台传递数组时,springmvc竟然接收不到 解决 尝试多次无果,突然看一篇文章写vue中的数组不是真正的数组需要强转转化JSON.stringify 将信将疑下测试了一把,还真的传递成功了。 不光要JSON.stringify…

Kotlin 笔记 -- Kotlin 语言特性的理解(一)

函数引用、匿名函数、lambda表达式、inline函数的理解 双冒号对函数进行引用的本质是生成一个函数对象只有函数对象才拥有invoke()方法,而函数是没有这个方法的kotlin中函数有自己的类型,但是函数本身不是对象,因此要引用函数类型就必须通过双…

数据结构 | 堆排序

#include<stdlib.h> #include<iostream.h> /* template<class T>//方法1 void BuildHeap(T* pa,int size) //建堆 {for(int isize/2-1;i>0;i--) //从邻近叶子的第一个非叶子结点至根节点PercolateDown(pa,i,size); //向下调整为堆 }template<class T&…

防止反编译,保护你的SpringBoot项目

ClassFinal-maven-plugin插件是一个用于加密Java字节码的工具&#xff0c;它能够保护你的Spring Boot项目中的源代码和配置文件不被非法获取或篡改。下面是如何使用这个插件来加密test.jar包的详细步骤&#xff1a; 安装并设置Maven&#xff1a; 首先确保你已经在你的开发环境中…

项目篇 | 图书管理系统 | 图像加载与绘制

项目篇 | 图书管理系统 | 图像加载与绘制 基本介绍 首先解释清楚什么叫图像加载与绘制,意思就是说项目中需要用到一些图片资源(各种图标),我们要在图书管理系统中展示这些图片,就需要先导入图片到项目中,再加载图片资源(通过资源路径)、绘制图片(即展示)。 注:如果…

算法——分治

思想&#xff1a;分而治之&#xff0c;将大问题转化为若干个相同或相似的子问题。快排的题目常见的方法是利用三指针法将数组分三块搭配随机选择基准元素的思想 颜色分类&#xff08;分治_快排&#xff09; 颜色分类 题目解析 原地对它们进行排序&#xff0c;使得相同颜色的元…

bugku -- eval

<?phpinclude "flag.php";$a $_REQUEST[hello];eval( "var_dump($a);");show_source(__FILE__); ?> //这段代码包含了一个PHP脚本。首先&#xff0c;它包含了一个名为"flag.php"的文件。然后&#xff0c;它定义了一个变量$a&#xff0c…

15个电脑小技巧

01.磁盘清理 电脑C盘满了就会变的很卡,先不着急打开清理软件,用电脑自带的磁盘清理工具先清理一下,也能腾出不少空间。 打开【此电脑】,鼠标右击C盘,点击【属性】-【磁盘清理】即可。 02.虚拟键盘 玩游戏的时候喜欢用虚拟键盘,教你如何显示出来。按【Win+R】输入“osk…

链表基础知识(二、双向链表头插、尾插、头删、尾删、查找、删除、插入)

目录 一、双向链表的概念 二、 双向链表的优缺点分析​与对比 2.1双向链表特点&#xff1a; 2.2双链表的优劣&#xff1a; 2.3循环链表的优劣 2.4 顺序表和双向链表的优缺点分析​ 三、带头双向循环链表增删改查实现 3.1SList.c 3.2创建一个新节点、头节点 3.3头插 3.…

成为软件测试工程师需要学什么?

成为软件测试工程师需要学习测试环境的搭建、前端开发知识、数据库知识、测试理论基础、开发语言基础、自动化测试、进阶内容。 1、测试环境的搭建 本部分主要是学习从操作系统开始&#xff0c;有关的计算机基础知识、软件和硬件知识、计算机理论知识、网络知识、如何在一个操…

C/C++ 表达式求值(含多位数)

个人主页&#xff1a;仍有未知等待探索_C语言疑难,数据结构,算法-CSDN博客 专题分栏&#xff1a;算法_仍有未知等待探索的博客-CSDN博客 目录 一、前言 二、解析 分析 最后直接上代码&#xff01; 一、前言 表达式求值是一个比较基础的代码关于栈的使用。在写的时候充分锻炼…

WPF——命令commond的实现方法

命令commond的实现方法 属性通知的方式 鼠标监听绑定事件 行为&#xff1a;可以传递界面控件的参数 第一种&#xff1a; 第二种&#xff1a; 附加属性 propa&#xff1a;附加属性快捷方式

【谭浩强C语言:前八章编程题(多解)】

文章目录 第一章1. 求两个整数之和(p7) 第二章2. 求三个数中的较大值&#xff08;用函数&#xff09;(p14、p107)3.求123...n(求n的阶乘&#xff0c;用for循环与while循环)(P17)1.循环求n的阶乘2.递归求n的阶乘(n< 10) 4.有M个学生&#xff0c;输出成绩在80分以上的学生的学…

【C++】封装:练习案例-点和圆的关系

练习案例&#xff1a;点和圆的关系 设计一个圆形类&#xff08;Circle&#xff09;&#xff0c;和一个点类&#xff08;Point&#xff09;&#xff0c;计算点和圆的关系。 思路&#xff1a; 1&#xff09;创建点类point.h和point.cpp 2&#xff09;创建圆类circle.h和circle…

pytorch实现DCP暗通道先验去雾算法及其onnx导出

pytorch实现DCP暗通道先验去雾算法及其onnx导出 简介实现ONNX导出导出测试 简介 最近在做图像去雾&#xff0c;于是在Pytorch上复现了一下dcp算法。暗通道先验去雾算法是大神何恺明2009年发表在CVPR上的一篇论文&#xff0c;还获得了当年的CVPR最佳论文。 实现 具体原理就不…

【贪心算法】【中位贪心】LeetCode:100123.执行操作使频率分数最大

涉及知识点 双指针 C算法&#xff1a;前缀和、前缀乘积、前缀异或的原理、源码及测试用例 包括课程视频 贪心算法 题目 给你一个下标从 0 开始的整数数组 nums 和一个整数 k 。 你可以对数组执行 至多 k 次操作&#xff1a; 从数组中选择一个下标 i &#xff0c;将 nums[i] …

网络编程day2作业

1.tcp实现通信 服务器&#xff1a; //tcp服务端#include <head.h>#define SERPORT 8888 #define IP "192.168.125.6"int main(int argc, const char *argv[]) { //1.创建套接字int sfdsocket(AF_INET,SOCK_STREAM,0);//2.绑定struct sockaddr_in ser;ser.sin…

喜报丨迪捷软件入选2023年浙江省信息技术应用创新典型案例

12月6日&#xff0c;浙江省经信厅公示了2023年浙江省信息技术应用创新典型案例入围名单。本次案例征集活动&#xff0c;由浙江省经信厅、省密码管理局、工业和信息化部网络安全产业发展中心联合组织开展&#xff0c;共遴选出24个优秀典型解决方案&#xff0c;迪捷软件“基于全数…

LeetCode刷题--- 找出所有子集的异或总和再求和

个人主页&#xff1a;元清加油_【C】,【C语言】,【数据结构与算法】-CSDN博客 个人专栏 力扣递归算法题 http://t.csdnimg.cn/yUl2I 【C】 http://t.csdnimg.cn/6AbpV 数据结构与算法 http://t.csdnimg.cn/hKh2l 前言&#xff1a;这个专栏主要讲述递归递归、搜…