首页 > 其他分享 >00-Ansible备忘录

00-Ansible备忘录

时间:2024-11-06 21:46:52浏览次数:3  
标签:00 file -- sudo ansible 备忘录 Ansible FILE become

00-Ansible备忘录

Ansible 备忘清单

此快速参考备忘单提供了使用 Ansible 的各种方法。

入门


安装

安装命令 环境
brew install ansible macos
yum install -y ansible centos
pip install ansible python

配置位置

文件路径 说明
/etc/ansible/ansible.cfg 系统范围的配置
~/ansible.cfg 用户特定的配置
$pwd/ansible.cfg 当前目录下的配置

配置文件优先级

  • 如果没有任何其他配置文件,默认使用 /etc/ansible/ansible.cfg
  • ~/.ansible.cfg 目录下的 .ansible.cfg
  • 当前目录下的 ansible.cfg,即在同一目录下 ansible.cfg 优先级高于 ~/.ansible.cfg
  • 环境变量 exoport ANSIBLE_CONFIG=/$DIR/ansible.cfg

查看正在使用的 ansible 配置文件:

ansible --version | grep "config file"

Inventory文件(hosts列表)

静态Inventory

/etc/ansible/hosts

mail.example.com

[webservers]
foo.example.com
bar.example.com

Inventory 主机组使用多个IP和域名

[web]
172.18.12.5[1:4]
[webservers]
www[01:50].example.com

Inventory 主机组使用子主机组

[usa:children]
southeast
northeast
southwest
northwest

给多台主机设置变量

group variables
如果组中的所有主机共享一个变量值,则可以一次将该变量应用于整个组

[atlanta]
host1
host2

[atlanta:vars]
ntp_server=ntp.atlanta.example.com
proxy=proxy.atlanta.example.com

命令行(ad-hoc)

ansible

检查Inventory是否生效

$ ansible all --list-hosts

ping所有目标

$ ansible all -m ping

ping本地(不使用SSH连接)

$ ansible all -i localhost, -e '{"ansible_connection": "local"}' -m ping
本地执行命令
$ ansible all -i localhost, -e '{"ansible_connection": "local"}' -a 'hostname'
获取本地主机的信息
$ ansible all -i localhost, -e '{"ansible_connection": "local"}' -m setup
获取远程到本地
$ ansible target -m fetch -a "src=/tmp/seq dest=/tmp/seq"
拷贝本地到远程
$ ansible target -m copy -a "src=/tmp/seq dest=/tmp/seq"

Ansible 命令帮助

$ ansible
$ ansible <host-pattern> [options]

:- -
-a MODULE_ARGS, --args=MODULE_ARGS 模块参数
--ask-vault-pass 询问保险库密码
-B SECONDS, --background=SECONDS 异步运行,X 秒后失败 (默认=N/A)
-C, --check 不要做任何改变;相反,尝试预测可能发生的一些变化
-D, --diff 更改(小)文件和模板时,显示这些文件中的差异; 与 --check 配合使用效果很好
-e EXTRA_VARS, --extra-vars=EXTRA_VARS 将附加变量设置为 key=value 或 YAML/JSON
-f FORKS, --forks=FORKS 指定要使用的并行进程数 (default=5)
-h, --help 显示此帮助信息并退出
-i INVENTORY, --inventory-file=INVENTORY 指定清单主机路径(默认=/etc/ansible/hosts)或逗号分隔的主机列表
-l SUBSET, --limit=SUBSET 进一步将选定主机限制为其他模式
--list-hosts 输出匹配主机列表;不执行任何其他操作
-m MODULE_NAME, --module-name=MODULE_NAME 要执行的模块名称 (default=command)
-M MODULE_PATH, --module-path=MODULE_PATH 指定模块库的路径 (default=None)
--new-vault-password-file=NEW_VAULT_PASSWORD_FILE 用于重新生成密钥的新保管库密码文件
-o, --one-line 压缩输出
--output=OUTPUT_FILE 用于加密或解密的输出文件名; 使用 - 用于标准输出
-P POLL_INTERVAL, --poll=POLL_INTERVAL 如果使用 -B 则设置轮询间隔(default=15)
--syntax-check 对 playbook 执行语法检查,但不要执行它
-t TREE, --tree=TREE 将输出记录到此目录
--vault-password-file=VAULT_PASSWORD_FILE 保险库密码文件
-v, --verbose 详细模式(-vvv 更多,-vvvv 启用连接调试)
--version 显示程序的版本号并退出
控制谁以及如何连接到主机,连接选项:
:- -
-k, --ask-pass 询问连接密码
--private-key=PRIVATE_KEY_FILE, --key-file=PRIVATE_KEY_FILE 使用此文件来验证连接
-u REMOTE_USER, --user=REMOTE_USER 以此用户身份连接(default=None)
-c CONNECTION, --connection=CONNECTION 要使用的连接类型 (default=smart)
-T TIMEOUT, --timeout=TIMEOUT 以秒为单位覆盖连接超时 (default=10)
--ssh-common-args=SSH_COMMON_ARGS 指定要传递给 sftp/scp/ssh 的常用参数 (e.g. ProxyCommand)
--sftp-extra-args=SFTP_EXTRA_ARGS 指定仅传递给 sftp 的额外参数 (e.g. -f, -l)
--scp-extra-args=SCP_EXTRA_ARGS 指定仅传递给 scp 的额外参数 (e.g. -l)
--ssh-extra-args=SSH_EXTRA_ARGS 指定仅传递给 ssh 的额外参数 (e.g. -R)

控制您成为目标主机上的用户的方式和用户,特权升级选项:

:- -
-s, --sudo 使用 sudo (nopasswd) 运行操作(已弃用,使用 become)
-U SUDO_USER, --sudo-user=SUDO_USER 所需的 sudo 用户(默认=root)(已弃用,使用 become)
-S, --su 使用 su 运行操作(已弃用,使用 become)
-R SU_USER, --su-user=SU_USER 以该用户身份使用 su 运行操作(默认 = root)(已弃用,使用 become)
-b, --become 使用 become 运行操作(不暗示密码提示)
--become-method=BECOME_METHOD 要使用的权限提升方法(默认=sudo),有效选择:[ sudo | su | pbrun | pfexec | runas | doas | dzdo ]
--become-user=BECOME_USER 以该用户身份运行操作(默认=root)
--ask-sudo-pass 询问 sudo 密码(已弃用,使用 become)
--ask-su-pass 询问 su 密码(已弃用,使用 become)
-K, --ask-become-pass 要求提权密码

Ansible Galaxy 工具

$ ansible-galaxy [delete|import|info|init|install|list|login|remove|search|setup] [--help] [options] ...

:- -
-h, --help 显示此帮助信息并退出
-v, --verbose 详细模式(-vvv 更多,-vvvv 启用连接调试)
--version 显示程序的版本号并退出

$ ansible-galaxy search --author <AUTHOR>
$ ansible-galaxy search --platforms <PLATFORM>
$ ansible-galaxy search --galaxy-tags <TAG>
$ ansible-galaxy info <ROLE>
$ ansible-galaxy install <ROLE> -p <ROLE_DIRECTORY>
$ ansible-galaxy install -r <ROLE1> <ROLE2> <ROLE3> ...
$ ansible-galaxy list
$ ansible-galaxy remove <ROLE>
$ ansible-galaxy init <ROLE>
$ ansible-galaxy init --offline <ROLE>

ansible-doc

在本地访问文档

$ ansible-doc
$ ansible-doc [options] [module...]

:- -
-h, --help 显示此帮助信息并退出
-l, --list 列出可用模块
-M MODULE_PATH, --module-path=MODULE_PATH 指定模块库的路径 (default=None)
-s, --snippet 显示指定模块的剧本片段
-v, --verbose 详细模式(-vvv 更多,-vvvv 启用连接调试)
--version 显示程序的版本号并退出

ansible-vault

$ ansible-vault
$ ansible-vault [create|decrypt|edit|encrypt|rekey|view] [--help] [options] vaultfile.yml

:- -
--ask-vault-pass 询问保险库密码
-h, --help 显示此帮助信息并退出
--new-vault-password-file=NEW_VAULT_PASSWORD_FILE 用于重新生成密钥的新保管库密码文件
--output=OUTPUT_FILE 用于加密或解密的输出文件名; 使用 - 用于标准输出
--vault-password-file=VAULT_PASSWORD_FILE 保险库密码文件
-v, --verbose 详细模式(-vvv 更多,-vvvv 启用连接调试)
--version 显示程序的版本号并退出

ansible-playbook

$ ansible-playbook
$ ansible-playbook playbook.yml

:- -
--ask-vault-pass 询问保险库密码
-C, --check 不要做任何改变;相反,尝试预测可能发生的一些变化
-D, --diff 更改(小)文件和模板时,显示这些文件中的差异;与 --check 配合使用效果很好
-e EXTRA_VARS, --extra-vars=EXTRA_VARS 将附加变量设置为 key=value 或 YAML/JSON
--flush-cache 清除事实缓存
--force-handlers 即使任务失败也运行处理程序
-f FORKS, --forks=FORKS 指定要使用的并行进程数(默认值=5)
-h, --help 显示此帮助信息并退出
-i INVENTORY, --inventory-file=INVENTORY 指定清单主机路径(默认=/etc/ansible/hosts)或逗号分隔的主机列表
-l SUBSET, --limit=SUBSET 进一步将选定主机限制为其他模式
--list-hosts 输出匹配主机列表;不执行任何其他操作
--list-tags 列出所有可用的标签
--list-tasks 列出所有将要执行的任务
-M MODULE_PATH, --module-path=MODULE_PATH 指定模块库的路径(默认=无)
--new-vault-password-file=NEW_VAULT_PASSWORD_FILE 用于重新生成密钥的新保管库密码文件
--output=OUTPUT_FILE 用于加密或解密的输出文件名;使用 - 用于标准输出
--skip-tags=SKIP_TAGS 只运行标签与这些值不匹配的播放和任务
--start-at-task=START_AT_TASK 在匹配此名称的任务处启动剧本
--step 一步一步:在运行前确认每个任务
--syntax-check 对 playbook 执行语法检查,但不要执行它
-t TAGS, --tags=TAGS 只运行带有这些值标记的播放和任务
--vault-password-file=VAULT_PASSWORD_FILE 保险库密码文件
-v, --verbose 详细模式(-vvv 更多,-vvvv 启用连接调试)
--version 显示程序的版本号并退出

连接选项:

:- -
-k, --ask-pass 询问连接密码
--private-key=PRIVATE_KEY_FILE, --key-file=PRIVATE_KEY_FILE 使用此文件来验证连接
-u REMOTE_USER, --user=REMOTE_USER 以此用户身份连接(默认=None)
-c CONNECTION, --connection=CONNECTION 要使用的连接类型(默认=smart)
-T TIMEOUT, --timeout=TIMEOUT 以秒为单位覆盖连接超时(默认值 = 10)
--ssh-common-args=SSH_COMMON_ARGS 指定要传递给 sftp/scp/ssh 的常用参数(例如 ProxyCommand)
--sftp-extra-args=SFTP_EXTRA_ARGS 指定仅传递给 sftp 的额外参数(例如 -f、-l)
--scp-extra-args=SCP_EXTRA_ARGS 指定仅传递给 scp 的额外参数(例如 -l)
--ssh-extra-args=SSH_EXTRA_ARGS 指定仅传递给 ssh 的额外参数(例如 -R)

特权升级选项:

:- -
-s, --sudo 使用 sudo (nopasswd) 运行操作(已弃用,使用 become)
-U SUDO_USER, --sudo-user=SUDO_USER 所需的 sudo 用户(默认=root)(已弃用,使用become)
-S, --su 使用 su 运行操作(已弃用,使用 become)
-R SU_USER, --su-user=SU_USER 以该用户身份使用 su 运行操作(默认 = root)(已弃用,使用become)
-b, --become 使用 become 运行操作(不暗示密码提示)
--become-method=BECOME_METHOD 要使用的权限提升方法(默认=sudo),有效选择:[ sudo | su | pbrun | pfexec | runas | doas | dzdo ]
--become-user=BECOME_USER 以该用户身份运行操作(默认=root)
--ask-sudo-pass 询问 sudo 密码(已弃用,使用 become)
--ask-su-pass 询问 su 密码(已弃用,使用 become)
-K, --ask-become-pass 要求提权密码

ansible-pull

$ ansible-pull 
$ ansible-pull -U <repository> [options]

:- -
--accept-host-key 如果尚未添加,则添加 repo url 的主机密钥
--ask-vault-pass 询问保险库密码
-C CHECKOUT, --checkout=CHECKOUT 分支/标签/提交结帐。默认为存储库模块的行为。
-d DEST, --directory=DEST 签出存储库的目录
-e EXTRA_VARS, --extra-vars=EXTRA_VARS 将附加变量设置为 key=value 或 YAML/JSON
-f, --force 即使无法更新存储库也运行 playbook
--full 做一个完整的克隆,而不是一个浅的
-h, --help 显示此帮助信息并退出
-i INVENTORY, --inventory-file=INVENTORY 指定清单主机路径(默认=/etc/ansible/hosts)或逗号分隔的主机列表
-l SUBSET, --limit=SUBSET 进一步将选定主机限制为其他模式
--list-hosts 输出匹配主机列表;不执行任何其他操作
-m MODULE_NAME, --module-name=MODULE_NAME 存储库模块名称,ansible 将使用它来签出 repo。默认是 git
-M MODULE_PATH, --module-path=MODULE_PATH 指定模块库的路径(默认=无)
--new-vault-password-file=NEW_VAULT_PASSWORD_FILE 用于重新生成密钥的新保管库密码文件
-o, --only-if-changed 仅在存储库已更新时才运行 playbook
--output=OUTPUT_FILE 用于加密或解密的输出文件名;使用 - 用于标准输出
--purge 剧本运行后清除结帐
--skip-tags=SKIP_TAGS 只运行标签与这些值不匹配的播放和任务
-s SLEEP, --sleep=SLEEP 在开始之前休眠随机间隔(在 0 到 n 秒之间)。这是分散 git 请求的有用方法
-t TAGS, --tags=TAGS 只运行带有这些值标记的播放和任务
-U URL, --url=URL 剧本存储库的 URL
--vault-password-file=VAULT_PASSWORD_FILE 保险库密码文件
-v, --verbose 详细模式(-vvv 更多,-vvvv 启用连接调试)
--verify-commit 验证签出提交的 GPG 签名,如果失败则中止运行 playbook。这就需要对应的VCS模块来支持这样的操作
--version 显示程序的版本号并退出

连接选项:

:- -
-k, --ask-pass 询问连接密码
--private-key=PRIVATE_KEY_FILE, --key-file=PRIVATE_KEY_FILE 使用此文件来验证连接
-u REMOTE_USER, --user=REMOTE_USER 以此用户身份连接(默认=无)
-c CONNECTION, --connection=CONNECTION 要使用的连接类型(默认=智能)
-T TIMEOUT, --timeout=TIMEOUT 以秒为单位覆盖连接超时(默认值 = 10)
--ssh-common-args=SSH_COMMON_ARGS 指定要传递给 sftp/scp/ssh 的常用参数(例如 ProxyCommand)
--sftp-extra-args=SFTP_EXTRA_ARGS 指定仅传递给 sftp 的额外参数(例如 -f、-l)
--scp-extra-args=SCP_EXTRA_ARGS 指定仅传递给 scp 的额外参数(例如 -l)
--ssh-extra-args=SSH_EXTRA_ARGS 指定仅传递给 ssh 的额外参数(例如 -R)

特权升级选项:

:- -
--ask-sudo-pass 询问 sudo 密码(已弃用,使用become)
--ask-su-pass 询问 su 密码(已弃用,使用become)
-K, --ask-become-pass 要求提权密码

ansible常用模块

Ansible 的模块已经高达 3000+ 之多。但是个人在日常工作中,比较常见的大约 20 多个

$  ansible-doc --list  #查询所有模块
$  ansible <host-pattern> [options] # 标准使用方式

:- - -
ping 检查指定节点机器是否还能连通 ansible all -m ping
command 用于在各受控端节点运行指定的命令 ansible all -m command -a 'hostname'
shell shell模块可以特殊字符,而command是不支持 ansible all -m shell -a 'hostname && date'
hostname 修改远程受控节点的主机名的模块 ansible -i /opt/hosts xx -m hostname -a 'name=ansible-client-199'
copy 在远程主机执行复制操作文件 ansible all -m copy -a 'src=/etc/hosts dest=/opt/hosts backup=yes'
fetch 从远程主机获取文件到管理节点,但是不支持目录操作 ansible all -m fetch -a "src=/etc/yum.repos.d/epel.repo dest=/usr/local/src"
script 管理端一个脚本,然后在远程服务器上执行 ansible all -m script -a '/root/time.sh'
file 主要用于远程主机上的文件和目录操作 ansible all -m file -a "path=/root/rsync.password mode=600 state=touch"
cron 管理执行任务计划模块(增删改查) ansible all -m cron -a "name='test a job' user=root job='/bin/sh /server/scripts/test.sh' minute=* hour=* day=* month=* weekday=*"
yum RedHat和CentOS的软件包安装和管理 安装
ansible all -m yum -a "name=httpd state=present"
ansible all -m yum -a "name=httpd state=installed"
卸载
ansible all -m yum -a "name=httpd state=absent"
ansible all -m yum -a "name=httpd state=removed"
servicesystemd 用于管理远程主机的服务 ansible all -m systemd -a "name=httpd state=started enabled=yes"
ansible all -m systemd -a "name=httpd state=restarted"
user useradd, userdel, usermod ansible all -m user -a 'name=haha remove=no state=absent'
group groupadd, groupdel, groupmod ansible all -m group -a 'name=mygroup state=absent'
setup 可收集远程主机的facts变量的信息 ansible all -m setup -a 'filter=ansible_default_ipv4'
authorized_key 为特定的用户账号添加或删除 SSH authorized keys ansible all -m authorized_key -a "user=root key='{{lookup('file','/root/.ssh/id_rsa.pub')}}' path=/root/.ssh/authorized_keys manage_dir=no"
replace 和 sed 命令比较类似,用于正则匹配和替换 ansible all -m replace -a "path=/etc/fstab regexp=^(UUID.*) replace='#\1'"
lineinfile 正则匹配,更改某个关键参数值 ansible all -m lineinfile -a "path=/etc/selinux/config regexp='^SELINUX=' line='SELINUX=disabled'"

另见


标签:00,file,--,sudo,ansible,备忘录,Ansible,FILE,become
From: https://www.cnblogs.com/qinzhi1209/p/18531133/00asible-memo-z1dixmp

相关文章

  • CF2001 题解
    A给定循环数组,每次操作时,设当前大小为m。选择$i\in[0,m)$,若满足$a_i\lea_{i+1\bmodm}$,则可删除$a_i,a_{i+1\bmodm}$中的任意一个。求最小的操作次数,使得数组中所有元素都相等。$n\le100$操作非常强,除了两个相邻位置相等的情况,可以删除任意元素。然而所有位置都......
  • P1090 [NOIP2004 提高组] 合并果子 / [USACO06NOV] Fence Repair G:贪心
    [NOIP2004提高组]合并果子/[USACO06NOV]FenceRepairG题目描述在一个果园里,多多已经将所有的果子打了下来,而且按果子的不同种类分成了不同的堆。多多决定把所有的果子合成一堆。每一次合并,多多可以把两堆果子合并到一起,消耗的体力等于两堆果子的重量之和。可以看出,所有的......
  • LeetCode100之接雨水(42)--Java
    1.问题描述        给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。        示例1输入:height=[0,1,0,2,1,0,1,3,2,1,2,1]输出:6解释:上面是由数组[0,1,0,2,1,0,1,3,2,1,2,1]表示的高度图,在这种情况下......
  • 100%吃透Spring 的三级缓存
    在此之前,我们需要了解什么是spring的循环依赖,下面我引用一篇之前的文档此处为语雀内容卡片,点击链接查看:https://www.yuque.com/u41175337/xy9eiy/egcll6gqml0ofb9a然后带你从源码级别debug,一步一步带你探索Spring是如何通过三级缓存来解决循环依赖问题的首先先创建两个类......
  • 万象网管2004报错提示:taxinject.dll文件丢失,如何修复并启动Server.exe
    在使用万象网管2004这款网吧管理软件时,部分用户可能会遇到启动Server.exe时系统提示“taxinject.dll文件丢失”的错误。这一错误通常会导致Server.exe无法正常启动,从而影响网吧管理系统的正常运行。本文将详细介绍如何修复这一错误,并成功启动Server.exe。一、了解taxinject.d......
  • 注册还能100%中奖?!免费试用、快速上云!竟有这种好事?!
    活动时间内完成注册亚马逊云科技账号,即可获得以下福利免费试用,带你体验快速上云热门场景,带你手把手轻松搭建51CTO博客专属福利,100%获得精美礼品添加小助手微信,回复关键词「AWS」奖品名称奖品图片一等奖罗技无线键鼠套装二等奖绿联充电宝三等奖50元京东E卡丰厚奖品等你来拿!抽中哪个......
  • KBP315-ASEMI小功率高耐压整流桥3A 1500V
    编辑:llKBP315-ASEMI小功率高耐压整流桥3A1500V型号:KBP315品牌:ASEMI封装:KBP-4安装方式:直插批号:2024+现货:50000+正向电流(Id):3A反向耐压(VRRM):1600V正向浪涌电流:50A正向电压(VF):1.10V引脚数量:4芯片个数:4芯片尺寸:MIL功率(Pd):小功率工作温度:-55°C~150°C类型:整流扁桥、插......
  • 关于我、重生到500年前凭借C语言改变世界科技vlog.15——深入理解指针(4)
    文章目录1.回调函数的介绍2.qsort使用实例2.1qsort函数介绍2.2使用qsort函数排序整型数据2.3使用qsort排序结构数据3.qsort的模拟实现希望读者们多多三连支持小编会继续更新你们的鼓励就是我前进的动力!1.回调函数的介绍回调函数就是一个通过函数指针调用的......
  • 60多门编程语言学习书籍超级大合集(700+本PDF)
    60多门编程语言的学习书籍超级大合集(700+本PDF),这简直就是编程爱好者的宝藏库啊!这里面包含了各种各样的编程语言,从常见的Java、Python到相对冷门的Haskell、Lisp等等。这些书籍的质量也是参差不齐,有那种深入剖析语言特性的专业著作,也有通俗易懂适合初学者的入门教程。对......
  • 100种算法【Python版】第51篇——希尔排序
    本文目录1算法步骤2算法示例3python代码3.1代码说明3.2复杂度分析4算法优化4.1Shell原始增量序列4.2Hibbard增量序列4.3Knuth增量序列4.4Sedgewick增量序列4.5Tokuda增量序列4.6Pratt增量序列5不同的增量序列的效率对比希尔......