ansible远程操作主机功能(1)

发布时间:2023年12月19日

自动化运维(playbook剧本yaml)

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

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

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

主需要一台主机上配置了ansible。

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

Copy

Service

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

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

幂等性:所谓幂等性,指的是多次操作或者多次执行行对系统资源的影响是一致的。

Systemctl stop firewalld

Systemctl stop firewalld

Systemctl stop firewalld

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

Systemctl resart firewalld 每一次操作都会先停再启动。

http ?get ?幂等性

Post:多次执行相同的post可能创建多个相同的资源。

Ansible的幂等性,决定了你可以放心大胆的使用,重复执行某个任务不会对结果产生任何影响(绝大多数情况)。

Ansible的四大组件:

  1. lnventory 主机清单(主机组)定义ansible可以远程操作的服务器。
  2. 模块 13个模块(常用的)通过模块可以实现远程的配置操作。
  3. Plugins插件
  4. Playbook剧本(shell脚本模式)yaml格式

Ansible的优缺点:

部署较为简单,主要在控制主机部署即可,被控制主机需要有ssh和pyhon2.5以上版本。基本上Linux都是自带的。

Ansible只能控制Linux系统,windows不行。

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

环境:

配置主机有两种方式:

  1. 直接声明主机的IP地址
  2. 主机名(/etc/hosts做映射)

Ansible的命令格式:

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

模块一:

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

Ansible 192.168.233.20 ?-a ‘ls /opt’

不加-m也就是不声明使用的模块,默认就是command模块。

常见参数:

Chdir:在远程主机上运行命令,提前就是command模块

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

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

模块二:

Shell模块,在远程主机执行命令。相当于 远程主机上的shell禁止,支持管道符和冲向

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

表示逻辑且,前一个命令成功才会执行后一个。

表示逻辑或,前面都成功与否,后面的命令都会执行。

在ansible 192.168.233.30 -m shell -a touch?/opt/ 123 && echo 456 > /opt/123 && ls /opt && cat /opt/123?

?

模块三:

cron模块 远程主机设置定时任务

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

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

分? 时? ?日? ?月? ?周

分=minute? ? ?时=hour? ? ?日= day? ?月=month? ? 周=weekday

job:任务执行的命令

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

删除定时任务:

多个几乎任务如果不给名字都是none,一但删除none 全部删除,不推荐,最好加上名字。

模块四:

User模块:用户管理模块

常用的参数:

name:指定用户名,必须添加 ???????

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

System=yes | no ,标记用户是否是一个程序用户

Uid:用户的唯一标识

Group:用户的所在组

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

Password:创建用户密码

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

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

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

使用ansible的user模块创建用户时,如果创建普通用户可以不加system=no 指定shell类型可以不加,默认就是/bin/bash如果创建的是程序用户,一定要声明system=yes 声明shell类型 shell=/sbin/nlogin 也可以指定UID的方式。给用户分配一个uid.

模块五:

Group模块:用户组的管理模块

常用参数:

Name 必须要有

Gid 设置组的id

先删除组用户:

文章来源:https://blog.csdn.net/weixin_62445943/article/details/135059545
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。