ITPub博客

首页 > 数据库 > 数据库开发技术 > iconic日记-ansible

iconic日记-ansible

原创 数据库开发技术 作者:iconicSecurity 时间:2024-08-23 18:01:00 0 删除 编辑
佛系随性笔记,记录最好的自己!



01

—


ansible基础



安装

brew install ansible  ##macos部署yum install -y ansible  ##centos部署pip install ansible  ##python部署
详情点击:https://docs.ansible.com/ansible/latest/installation_guide/intro_installation.html
配置位置
/etc/ansible/ansible.cfg  ##系统范围的配置~/ansible.cfg  ##用户特定的配置pwd/ansible.cfg  ##当前目录下的配置
A 如果没有任何其他配置文件,默认使用 /etc/ansible/ansible.cfgB ~/.ansible.cfg 家目录下的 .ansible.cfgC 当前目录下的 ansible.cfg,即在同一目录下 ansible.cfg 优先级高于 ~/.ansible.cfgD 环境变量 exoport ANSIBLE_CONFIG=/$DIR/ansible.cfg##配置文件优先级
ansible --version | grep "config file"##查看正在使用的ansible配置文件


Inventory文件(hosts列表) 

/etc/ansible/hosts##静态Inventory
mail.example.com
[webservers]foo.example.combar.example.com

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

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

Inventory 主机组使用子主机组

[usa:children]southeastnortheastsouthwestnorthwest
给多台主机设置变量
[atlanta]host1host2
[atlanta:vars]ntp_server=ntp.atlanta.example.comproxy=proxy.atlanta.example.com##group variables 如果组中的所有主机共享一个变量值,则可以一次将该变量应用于整个组

02

—


ansible命令行


ansible
ansible all --list-hosts##检查Inventory是否生效ansible all -m ping##ping所有目标ansible all -i localhost, -e '{"ansible_connection": "local"}' -m ping##ping本地(不使用SSH连接)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 Galaxy

ansible-galaxy [delete|import|info|init|install|list|login|remove|search|setup] [--help] [options] ...##-h、--help 显示此帮助信息并退出##-v、 --verbose 详细模式(-vvv 更多,-vvvv 启用连接调试)##--version  显示程序的版本号并退出
##Ansible Galaxy中的角色的常用工具##
ansible-galaxy search --author <AUTHOR>##在Ansible Galaxy中搜索特定作者的角色ansible-galaxy search --platforms <PLATFORM>##搜索指定平台的角色ansible-galaxy search --galaxy-tags <TAG>##搜索具有特定Galaxy标签的角色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角色结构ansible-galaxy init --offline <ROLE>##在离线模式下初始化一个新的Ansible角色结构

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 询问保险库密码##--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
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)
##控制您成为目标主机上的用户的方式和用户,特权升级选项##
##-b, --become  使用 become 运行操作(不暗示密码提示)##--become-method=BECOME_METHOD 要使用的权限提升方法(默认=sudo),有效选择:[ sudo | su | pbrun | pfexec | runas | doas | dzdo ]##--become-user=BECOME_USER  以该用户身份运行操作(默认=root)##-K, --ask-become-pass  要求提权密码

ansible常用模块

ansible-doc --list  ##查询所有模块ansible <host-pattern> [options] ##标准使用方式
ping  ansible all -m ping##检查指定节点机器是否还能连通 
command ansible all -m command -a 'hostname'##用于快速检查或收集远程主机的信息
shell ansible all -m shell -a 'hostname && date'##shell模块可以特殊字符,而command是不支持
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 安装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"##RedHat和CentOS的软件包安装和管理
service和systemd ansible all -m systemd -a "name=httpd state=started enabled=yes"##用于管理远程主机的服务
ansible all -m systemd -a "name=httpd state=restarted"ansible all -m user -a 'name=haha remove=no state=absent'##user useradd, userdel, usermod
group ansible all -m group -a 'name=mygroup state=absent'##groupadd, groupdel, groupmod
setup ansible all -m setup -a 'filter=ansible_default_ipv4'##可收集远程主机的facts变量的信息
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 ansible all -m replace -a "path=/etc/fstab regexp=^(UUID.*) replace='#\1'"##和 sed 命令比较类似,用于正则匹配和替换 
lineinfile ansible all -m lineinfile -a "path=/etc/selinux/config regexp='^SELINUX=' line='SELINUX=disabled'"## 正则匹配,更改某个关键参数值



深圳        

注释:如有失误,望批评指正!


后面会写下Windows和liunx的应急响应技巧、容器、还有一些网络安全、数据安全。


后台输入“Windows应急响应手册、linux应急响应手册、数据安全政策、数据安全治理、电力、工业、金融、0731”有相关资料可供下载!




原文作者:老登的安全观;如有侵权,请联系管理员删除。

请登录后发表评论 登录
全部评论
关注公众号:老登的安全观 数据安全从业者,佛系随行笔记,记录最好的自己!

注册时间:2024-07-02

  • 博文量
    97
  • 访问量
    79479