首页 > 其他分享 >70、ansible常用工具及模块介绍

70、ansible常用工具及模块介绍

时间:2023-04-25 17:03:40浏览次数:34  
标签:name -- 主机 setup ansible 模块 70 常用工具

ansible相关工具
  • /usr/bin/ansible 主程序,临时命令执行工具
  • /usr/bin/ansible-doc 查看配置文档,模块功能查看工具,相当于man
  • /usr/bin/ansible-playbook 定制自动化任务,编排剧本工具,相当于脚本
  • /usr/bin/ansible-pull 远程执行命令的工具
  • /usr/bin/ansible-vault 文件加密工具
  • /usr/bin/ansible-console 基于Console界面与用户交互的执行工具
  • /usr/bin/ansible-galaxy 下载/上传优秀代码或Roles模块的官网平台

ansible要使用,需要提前写好host已经密钥认证完成,且需要使用ssh的yes认证需要为弄

取消ssh时的yes验证

1.全部取消yes验证:在/etc/ssh/ssh_config中找到StrictHostKeyChecking,设为no
 若只想单个用户,如root,echo "StrictHostKeyChecking no" > ~/.ssh/config
2.在ansible的配置文件/etc/ansible/ansible.cfg中,配置host_key_checking = False(取消注释)
ansible-doc

此工具用于查看帮助文档

格式

ansible-doc [options] [module...]
-l, --list #列出可用模块
-s, --snippet #显示指定模块的playbook片段
#列出所有模块
ansible-doc -l
#查看指定模块帮助用法
ansible-doc ping
#查看指定模块帮助用法
ansible-doc -s ping

70、ansible常用工具及模块介绍_ansible模块

70、ansible常用工具及模块介绍_ansible-doc_02

70、ansible常用工具及模块介绍_ansible模块_03

ansible

此工具通过ssh协议,实现对远程主机的配置管理、应用部署、任务执行等功能

格式

ansible <host-pattern> [-m <module-name>] [-a <module-args>] [-u <remote-user>] [-k] [-K] [--become] [--become-user <become-user>] [--ask-become-pass] [-i <inventory-file>] [--private-key <path-to-keyfile>] [--sudo] [--sudo-user <sudo-user>] [--ask-pass] [--ssh-common-args <ssh-common-args>] [--ssh-extra-args <ssh-extra-args>] [--scp-extra-args <scp-extra-args>] [-c <connection>] [--module-path <module-path>] [--forks <forks>] [--timeout <timeout>] [--limit <subset>] [--tags <tag>] [--skip-tags <tag>] [<ansible-playbook-arguments>]

选项说明:

<host-pattern>: 主机模式,可以是一个主机名、IP地址,也可以是一个定义在Inventory中的主机组;
--list-hosts #显示主机列表,可简写 --list
-m <module-name>: 使用的模块名称;
-a <module-args>: 模块的参数;
-u <remote-user>: 远程用户;
-C, --check #检查,并不执行
-k: 使用密码进行SSH连接(提示输入密码);
-K: 使用sudo时需要密码(提示输入密码);
--become: 切换到sudo/su用户;
--become-user <become-user>: 切换到指定的sudo/su用户;
--ask-become-pass: 使用sudo/su时需要密码(提示输入密码);
-i <inventory-file>: Inventory文件路径;
--private-key <path-to-keyfile>: 私钥文件路径;
--sudo: 通过sudo切换用户;
--sudo-user <sudo-user>: 切换到指定的sudo用户;
--ask-pass: 使用密码进行SSH连接(提示输入密码);
--ssh-common-args <ssh-common-args>: 指定SSH连接的参数;
--ssh-extra-args <ssh-extra-args>: 指定额外的SSH连接参数;
--scp-extra-args <scp-extra-args>: 指定额外的SCP参数;
-c <connection>: 指定连接方式(local、ssh等);
--module-path <module-path>: 指定模块路径;
--forks <forks>: 指定并行执行任务的数量;
--timeout <timeout>: 指定任务执行的超时时间;
--limit <subset>: 指定操作的子集(例如,指定一个或多个主机或主机组);
--tags <tag>: 指定要执行的任务标签;
--skip-tags <tag>: 指定要跳过的任务标签;
<ansible-playbook-arguments>: 其他ansible-playbook参数。

70、ansible常用工具及模块介绍_ansible-doc_04

ansible的Host-pattern

用于匹配被控制的主机的列表

All :表示所有Inventory中的所有主机

*:通配符

70、ansible常用工具及模块介绍_ansible模块_05

或关系

70、ansible常用工具及模块介绍_ansible模块_06

逻辑与

#在websrv组并且在dbsrv组中的主机

70、ansible常用工具及模块介绍_ansible模块_07

逻辑非

#在dbsrv组,但不在websrv组中的主机

#注意:此处为单引号

70、ansible常用工具及模块介绍_ansilbe_08

正则表达式

ansible "~(web|db).*\.lgw\.com" –m ping

70、ansible常用工具及模块介绍_ansilbe_09

ansible执行过程

  1. 加载自己的配置文件 默认/etc/ansible/ansible.cfg
  2. 加载自己对应的模块文件,如:command
  3. 通过ansible将模块或命令生成对应的临时py文件,并将该文件传输至远程服务器的对应执行用户 $HOME/.ansible/tmp/ansible-tmp-数字/XXX.PY文件
  4. 给文件+x执行
  5. 执行并返回结果
  6. 删除临时py文件,退出

ansible 的执行状态

绿色:执行成功并且不需要做改变的操作

黄色:执行成功并且对目标主机做变更

红色:执行失败

cat ansible.cfg  | grep -A 14 color

70、ansible常用工具及模块介绍_ansilbe_10

#以wang用户执行ping存活检测
ansible all -m ping -u wang -k
#以wang sudo至root执行ping存活检测
ansible all -m ping -u wang -k -b
#以wang sudo至lgw用户执行ping存活检测
ansible all -m ping -u wang -k -b --become-user=lgw
#以wang sudo至root用户执行ls
ansible all -m command -u wang -a 'ls /root' -b --become-user=root -k -K

70、ansible常用工具及模块介绍_ansible-doc_11

ansible-vault
ansible-vault [create|decrypt|edit|encrypt|rekey|view]
ansible-vault encrypt hello.yml #加密
ansible-vault decrypt hello.yml #解密
ansible-vault view hello.yml #查看
ansible-vault edit hello.yml #编辑加密文件
ansible-vault rekey hello.yml #修改口令
ansible-vault create new.yml #创建新文件

70、ansible常用工具及模块介绍_ansible模块_12

ansible-console

此工具可交互执行命令

执行用户@当前操作的主机组 (当前组的主机数量)[f:并发数]$
常用子命令:
设置并发数: forks n 例如: forks 10
切换组: cd 主机组 例如: cd web
列出当前组主机列表: list
列出所有的内置命令: ?或help

70、ansible常用工具及模块介绍_ansible-doc_13

70、ansible常用工具及模块介绍_ansilbe_14

ansible-galaxy

此工具会连接 https://galaxy.ansible.com 下载相应的roles

#列出所有已安装的galaxy
ansible-galaxy list
#安装galaxy
ansible-galaxy install geerlingguy.mysql
ansible-galaxy install geerlingguy.redis
#删除galaxy
ansible-galaxy remove geerlingguy.redis

70、ansible常用工具及模块介绍_ansible-doc_15

Ansible常用模块
command模块

功能:在远程主机执行命令,此为默认模块,可忽略-m选项

注意:此命令不支持 $VARNAME < > | ; & 等,用shell模块实现

  • creates A filename or (since 2.0) glob pattern. If it already exists, this step won't be run. [Default: (null)] type: path
  •  removes

   A filename or (since 2.0) glob pattern. If it already exists, this step *will* be run.

  [Default: (null)]

   type: path


70、ansible常用工具及模块介绍_ansilbe_16

70、ansible常用工具及模块介绍_ansible模块_17

70、ansible常用工具及模块介绍_ansilbe_18

shell模块

功能:和command相似,用shell执行命令

70、ansible常用工具及模块介绍_ansilbe_19

70、ansible常用工具及模块介绍_ansilbe_20

70、ansible常用工具及模块介绍_ansible模块_21

70、ansible常用工具及模块介绍_ansilbe_22

Script 模块

功能:在远程主机上运行ansible服务器上的脚本(无需执行权限)

格式

ansible websrvs -m script -a /data/test.sh

70、ansible常用工具及模块介绍_ansilbe_23

70、ansible常用工具及模块介绍_ansilbe_24

70、ansible常用工具及模块介绍_ansilbe_25

copy模块

功能:从ansible服务器主控端复制文件到远程主机

70、ansible常用工具及模块介绍_ansilbe_26

70、ansible常用工具及模块介绍_ansible-doc_27

#如目标存在,默认覆盖,此处指定先备份
ansible all -m copy -a "src=/root/test1.sh dest=/tmp/test2.sh owner=lgw mode=600 backup=yes"
#指定内容,直接生成目标文件
ansible all -m copy -a "content='test line1\ntest line2' dest=/tmp/test.txt"
#复制/etc目录自身,注意/etc/后面没有/
ansible all -m copy -a "src=/etc dest=/backup"
#复制/etc/下的文件,不包括/etc/目录自身,注意/etc/后面有/
ansible websrv -m copy -a "src=/etc/ dest=/backup

70、ansible常用工具及模块介绍_ansilbe_28

fetch模块

从远程主机提取文件至ansible的主控端,copy相反,目前不支持目录

ansible websrv -m fetch -a 'src=/root/test.sh dest=/data/scripts'

70、ansible常用工具及模块介绍_ansible模块_29

70、ansible常用工具及模块介绍_ansilbe_30

70、ansible常用工具及模块介绍_ansilbe_31

file模块

功能:设置文件属性

70、ansible常用工具及模块介绍_ansilbe_32

70、ansible常用工具及模块介绍_ansible模块_33

创建空文件
ansible all -m file -a 'path=/data/test.txt state=touch'
#删除文件
ansible all -m file -a 'path=/data/test.txt state=absent'
ansible all -m file -a "path=/root/test.sh owner=lgw mode=755"
#创建目录
ansible all -m file -a "path=/data/mysql state=directory owner=mysql
group=mysql"
#创建软链接
ansible all -m file -a 'src=/data/testfile dest=/data/testfile-link state=link'

70、ansible常用工具及模块介绍_ansible模块_34

70、ansible常用工具及模块介绍_ansible-doc_35

unarchive 模块

功能:解包解压缩

实现有两种用法:

1、将ansible主机上的压缩包传到远程主机后解压缩至特定目录,设置copy=yes

2、将远程主机上的某个压缩包解压缩到指定路径下,设置copy=no

70、ansible常用工具及模块介绍_ansible-doc_36

70、ansible常用工具及模块介绍_ansible-doc_37

常见参数:
copy:默认为yes,当copy=yes,拷贝的文件是从ansible主机复制到远程主机上,如果设置为copy=no,会在远程主机上寻找src源文件
remote_src:和copy功能一样且互斥,yes表示在远程主机,不在ansible主机,no表示文件在ansible主机上
src:源路径,可以是ansible主机上的路径,也可以是远程主机(被管理端或者第三方主机)上的路径,如果是远程主机上的路径,则需要设置copy=no
dest:远程主机上的目标路径
mode:设置解压缩后的文件权限
ansible all -m unarchive -a 'src=/data/test.tgz dest=/var/lib/test owner=lgw group=bin'
ansible all -m unarchive -a 'src=/tmp/test.zip dest=/data copy=no mode=0777'
ansible all -m unarchive -a 'src=https://example.com/example.zip dest=/data copy=no
Archive 模块

功能:打包压缩保存在被管理节点

ansible websrvs -m archive -a 'path=/var/log/ dest=/data/log.tar.bz2 format=bz2 owner=lgw mode=0600'
Hostname 模块

功能:管理主机名

ansible websrv -m hostname -a "name=websrv"
Cron 模块

功能:计划任务

支持时间:minute,hour,day,month,weekday

70、ansible常用工具及模块介绍_ansible-doc_38

70、ansible常用工具及模块介绍_ansilbe_39

#创建任务
ansible 10.0.7.200 -m cron -a 'hour=2 minute=30 weekday=1-5 name="backup mysql" job=/root/mysql_backup.sh'
ansible websrvs -m cron -a "minute=*/5 job='/usr/sbin/ntpdate ntp.aliyun.com &>/dev/null' name=Synctime"
#禁用计划任务
ansible websrvs -m cron -a "minute=*/5 job='/usr/sbin/ntpdate 172.20.0.1 &>/dev/null' name=Synctime disabled=yes"
#启用计划任务
ansible websrvs -m cron -a "minute=*/5 job='/usr/sbin/ntpdate 172.20.0.1 &>/dev/null' name=Synctime disabled=no"
#删除任务
ansible websrvs -m cron -a "name='backup mysql' state=absent"
ansible websrvs -m cron -a 'state=absent name=Synctime
Yum 模块

功能:管理软件包,只支持RHEL,CentOS,fedora,不支持Ubuntu其它版本

ansible websrvs -m yum -a 'name=httpd state=present' #安装
ansible websrvs -m yum -a 'name=httpd state=absent' #删除
Service 模块

功能:管理服务

ansible all -m service -a 'name=httpd state=started enabled=yes'
ansible all -m service -a 'name=httpd state=stopped'
ansible all -m service -a 'name=httpd state=reloaded'
ansible all -m service -a 'name=httpd state='
User 模块

功能:管理用户

70、ansible常用工具及模块介绍_ansible-doc_40

70、ansible常用工具及模块介绍_ansible模块_41

70、ansible常用工具及模块介绍_ansible模块_42

#创建用户
ansible all -m user -a 'name=user1 comment="test user" uid=2048 home=/app/user1 group=root'
ansible all -m user -a 'name=nginx comment=nginx uid=88 group=nginx groups="root,daemon" shell=/sbin/nologin system=yes create_home=no home=/data/nginx non_unique=yes'
#remove=yes表示删除用户及家目录等数据,默认remove=no
ansible all -m user -a 'name=nginx state=absent remove=yes'

70、ansible常用工具及模块介绍_ansible-doc_43

Group 模块

功能:管理组

#创建组
ansible websrvs -m group -a 'name=nginx gid=88 system=yes'
#删除组
ansible websrvs -m group -a 'name=nginx state=absent
Lineinfile 模块

ansible在使用sed进行替换时,经常会遇到需要转义的问题,而且ansible在遇到特殊符号进行替换时,存在问题,无法正常进行替换 。其实在ansible自身提供了两个模块:lineinfile模块和replace模块,可以方便的进行替换

70、ansible常用工具及模块介绍_ansible-doc_44

70、ansible常用工具及模块介绍_ansible-doc_45

70、ansible常用工具及模块介绍_ansilbe_46

70、ansible常用工具及模块介绍_ansilbe_47

70、ansible常用工具及模块介绍_ansible模块_48

70、ansible常用工具及模块介绍_ansilbe_49

Replace 模块

该模块有点类似于sed命令,主要也是基于正则进行匹配和替换,建议使用

ansible all -m replace -a "path=/etc/fstab regexp='^(UUID.*)' replace='#\1'"
ansible all -m replace -a "path=/etc/fstab regexp='^#(.*)' replace='\1'"
Setup 模块

功能: setup 模块来收集主机的系统信息,这些 facts 信息可以直接以变量的形式使用,但是如果主机较多,会影响执行速度,可以使用 gather_facts: no 来禁止 Ansible 收集 facts 信息

70、ansible常用工具及模块介绍_ansilbe_50

ansible all -m setup
ansible all -m setup -a "filter=ansible_nodename"
ansible all -m setup -a "filter=ansible_hostname"
ansible all -m setup -a "filter=ansible_domain"
ansible all -m setup -a "filter=ansible_memtotal_mb"
ansible all -m setup -a "filter=ansible_memory_mb"
ansible all -m setup -a "filter=ansible_memfree_mb"
ansible all -m setup -a "filter=ansible_os_family"
ansible all -m setup -a "filter=ansible_distribution_major_version"
ansible all -m setup -a "filter=ansible_distribution_version"
ansible all -m setup -a "filter=ansible_processor_vcpus"
ansible all -m setup -a "filter=ansible_all_ipv4_addresses"
ansible all -m setup -a "filter=ansible_architecture"
ansible all -m setup -a "filter=ansible_processor*"
ansible all -m setup -a 'filter="ansible_default_ipv4"'

70、ansible常用工具及模块介绍_ansible模块_51

70、ansible常用工具及模块介绍_ansilbe_52

标签:name,--,主机,setup,ansible,模块,70,常用工具
From: https://blog.51cto.com/gavenlee/6224586

相关文章

  • leetcode 570 至少有5名直接下屬的經理
    至少有5名直接下屬的經理 子查詢select`name`fromEmployeewhereidin(selectmanagerIdfromEmployeegroupbymanagerIdhavingcount(managerId)>=5) 自連接selecte2.namefromEmployeee1,Employeee2wheree1.managerId=e2.idgr......
  • ansible自动化运维
    修改ansible服务器端hosts文件将hosts文件复制到两台客户端切换到ansible光盘挂载光盘删除系统自带源安装ansible服务器端检查版本配置ansible客户端生成密钥对上传公钥到客户端centos02和centos03上登录面交互式验证远程创建目录benet查看创建的目录查看客户端磁盘空间查看客户端s......
  • Windows更新失败(0x8007000d)
    “管理员:命令提示符”窗口中,键入以下命令。在每项命令后按Enter键:DISM.exe/Online/Cleanup-image/ScanhealthDISM.exe/Online/Cleanup-image/Restorehealth要关闭“管理员:命令提示符”窗口,请键入Exit,然后按Enter。再次运行Windows更新。......
  • 使用ansible-playbook自动化安装proxysql+replication manager切换MySQL
    【proxysql+replicationmanager切换MySQL】【剧本说明】以下文件在roles目录下treeproxysql/proxysql/├──defaults│└──main.yml├──files│└──rpms│├──proxysql-2.4.1-1-centos7.x86_64.rpm│└──replication-manager-osc-cgo-2......
  • NETAPP fans270c巡检命令
    1.查看环境信息   SXTY-PS-MMSC1-STORAGE-1A>environmentstatus2.查看系统信息详情 SXTY-PS-MMSC1-STORAGE-1A>sysconfig-a SXTY-PS-MMSC1-STORAGE-1A>sysconfig-A3.查看磁盘owner信息 SXTY-PS-MMSC1-STORAGE-1A>diskshow-v4.查看raid组详情 SXTY-PS-MM......
  • 年薪70万的全栈需要什么技能?
    什么是全栈开发人员?全栈Web开发人员是一名技术专家,可以在任何应用程序的前端和后端工作。这个人应该熟悉3层模型的每一层。3层由表示层(处理用户界面的主前端部分),业务逻辑层(任何处理数据验证的应用程序的后端部分)数据库层全栈开发人员不一定掌握所有技术。但是,专业人员应该......
  • ASEMI代理ADI亚德诺ADAU1701JSTZ-RL车规级芯片
    编辑-ZADAU1701JSTZ-RL芯片参数:型号:ADAU1701JSTZ-RL模拟电源电压:3.3V数字电源电压:1.8V输入/输出电压:3.3V环境温度:25°C主时钟输入:12.288MHz满刻度模拟输入:3.3V输入阻抗:30kΩ分辨率:24Bits总谐波失真+噪声:-80dB模拟电流:65mA数字电流:40mA储存温度范围:-65~+1......
  • 「解题报告」CF708E Student's Camp
    感觉这篇题解的做法很强啊,贺一下。连通:考虑将每一种情况对应一条路径。钦定这条路径为能往下则往下,不能往下就向左或向右走到第一个能往下的位置然后往下。这样只考虑每一种路径,再对应的计算路径相应的情况的概率和。这个是容易计算的,而路径需要记录的状态少了一维,于是就可以......
  • 基于django+ansible+webssh运维自动化管理系统
    基于django+ansible+webssh运维自动化管理系统 前言最初开发这个基于Djangoansible运维自动化管理系统的想法其实从大学时候就已经有了,但是苦于技术原因和没有线上环境原因一直没有开发,现在有了这个技术和环境之后开始着手开发了这个项目,项目难点在于你要理解如何设计数据库,......
  • 算法学习day03链表part01-203、707、206--待办
    //这块需求重新进行学习packageLeetCode.linkedlistpart01;publicclassListNode{//结点的值intval;//下一个结点ListNodenext;//节点的构造函数(无参)publicListNode(){}//节点的构造函数(有一个参数)publicLis......