目录

  • 使用ansible发布公钥
  • ansible基本命令
  • ansbile配置文件详解

一、使用ansible发布公钥

1.0 生成秘钥对

1、生成命令

ssh-keygen -t rsa

# 推送单个公钥到远程机器
ssh-copy-id -i ~/.ssh/id_rsa.pub username@<IP>

  

2、验证

ll .ssh/
total 8
-rw-------. 1 root root 2610 Feb 4 01:20 id_rsa
-rw-r--r--. 1 root root 580 Feb 4 01:20 id_rsa.pub

  

1.1 添加ansible host

1、编辑/etc/ansible/hosts,没有则创建些文件。

格式:【主机名】 【主机地址】 【主机密码】 默认是root用户来进行的

[sync-ssh-key-servers]
192.168.10.52 ansible_ssh_user=root ansible_ssh_pass=1q2w3e4r

  

2、编辑/etc/ansible/ansible.cfg, 打开host_key_checking = False选项

[defaults]
host_key_checking = False

  

1.2 书写ansible-playbook

1、编写push.ssh.ymal

# cat /etc/ansible/roles/push.ssh.ymal
- hosts: sync-ssh-key-servers(hosts定义)
user: root (互信用户)
tasks:
- name: ssh-copy
authorized_key: user=root key="{{ lookup('file', '/root/.ssh/id_rsa.pub') }}"
tags:
- sshkey

  

2、验证ansible-playbook是否ok

# 执行命令
# ansible-playbook /etc/ansible/roles/push.ssh.ymal -f 10 (并发数)
[DEPRECATION WARNING]: The TRANSFORM_INVALID_GROUP_CHARS settings is set to allow bad characters in group names by default, this will change, but still be user configurable on deprecation. This feature will be removed in version 2.10. Deprecation warnings can be
disabled by setting deprecation_warnings=False in ansible.cfg.
[WARNING]: Invalid characters were found in group names but not replaced, use -vvvv to see details PLAY [sync-ssh-key-servers] ************************************************************************************************************************************************************************************************************************************************** TASK [Gathering Facts] *******************************************************************************************************************************************************************************************************************************************************
ok: [192.168.10.52] TASK [ssh-copy] **************************************************************************************************************************************************************************************************************************************************************
changed: [192.168.10.52] PLAY RECAP *******************************************************************************************************************************************************************************************************************************************************************
192.168.10.52 : ok=2 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0

  

1.3命令验证是否ssh-key执行成功

#  ansible all -a date
[DEPRECATION WARNING]: The TRANSFORM_INVALID_GROUP_CHARS settings is set to allow bad characters in group names by default, this will change, but still be user configurable on deprecation. This feature will be removed in version 2.10. Deprecation warnings can be
disabled by setting deprecation_warnings=False in ansible.cfg.
[WARNING]: Invalid characters were found in group names but not replaced, use -vvvv to see details 192.168.10.52 | CHANGED | rc=0 >>
Tue Feb 4 02:05:52 EST 2020

# ansible all -m ping
[DEPRECATION WARNING]: The TRANSFORM_INVALID_GROUP_CHARS settings is set to allow bad characters in group names by default, this will change, but still be user configurable on deprecation. This feature will be removed in version 2.10. Deprecation warnings can be
disabled by setting deprecation_warnings=False in ansible.cfg.
[WARNING]: Invalid characters were found in group names but not replaced, use -vvvv to see details

192.168.10.52 | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/libexec/platform-python"
},
"changed": false,
"ping": "pong"
}

  

二 ansible基本命令

2.1ansible

ansible是指令核心部分,其主要用于执行ad-hoc命令,即单条命令。默认后面需要跟主机和选项部分,默认不指定模块时,使用的是command模块。
Usage: ansible [options]

1、选项:

参数

-a MODULE_ARGS, --args=MODULE_ARGS
模块的参数。
--ask-vault-pass
vault 密码。
-B SECONDS, --background=SECONDS
异步运行时,多长时间超时。
-C, --check
只是测试一下会改变什么内容,不会真正去执行;相反,试图预测一些可能发生的变化。
-D, --diff
当更改文件和模板时,显示这些文件得差异,比--check效果好。
-e EXTRA_VARS, --extra-vars=EXTRA_VARS
添加附加变量,比如key=value,yaml,json格式。
-f FORKS, --forks=FORKS
指定定要使用的并行进程数,默认为5个。
-h, --help
显示此帮助信息。
-i INVENTORY, --inventory-file=INVENTORY
指定主机清单文件或逗号分隔的主机,默认为/etc/ansible/hosts。
-l SUBSET, --limit=SUBSET
进一步限制所选主机/组模式,只执行-l 后的主机和组。
--list-hosts
输出匹配主机的列表。
-m MODULE_NAME, --module-name=MODULE_NAME
要执行的模块,默认为command。
-M MODULE_PATH, --module-path=MODULE_PATH
要执行的模块的路径。
--new-vault-password-file=NEW_VAULT_PASSWORD_FILE
新vault密钥文件。
-o, --one-line
压缩输出,摘要输出.尝试一切都在一行上输出。
--output=OUTPUT_FILE
加密或解密输出文件名 用于标准输出。
-P POLL_INTERVAL, --poll=POLL_INTERVAL
如果使用-B,则设置轮询间隔。
--syntax-check
对playbook进行语法检查,且不执行playbook。
-t TREE, --tree=TREE
将日志内容保存在该目录中,文件名以执行主机名命名。
--vault-password-file=VAULT_PASSWORD_FILE
vault密码文件
-v, --verbose
输出执行的详细信息,使用-vvv获得更多,-vvvv 启用连接调试
--version
显示程序版本号

  

2、链接选项:

参数

-k, --ask-pass
要求用户输入请求连接密码
--private-key=PRIVATE_KEY_FILE, --key-file=PRIVATE_KEY_FILE
私钥路径,使用这个文件来验证连接
-u REMOTE_USER, --user=REMOTE_USER
连接用户
-c CONNECTION, --connection=CONNECTION
连接类型,默认smart
-T TIMEOUT, --timeout=TIMEOUT
指定默认超时时间,默认是10S
--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

  

3、特权升级选项:

参数

-s, --sudo
使用sudo (nopasswd)运行操作 , 不推荐使用
-U SUDO_USER, --sudo-user=SUDO_USER
sudo 用户,默认为root, 不推荐使用
-S, --su
使用su运行操作, 不推荐使用
-R SU_USER, --su-user=SU_USER
su 用户,默认为root,不推荐使用
-b, --become
运行操作
--become-method=BECOME_METHOD
权限升级方法使用 ,默认为sudo,有效选择:sudo,su,pbrun,pfexec,runas,doas,dzdo
--become-user=BECOME_USER
使用哪个用户运行,默认为root
--ask-sudo-pass
sudo密码,不推荐使用
--ask-su-pass
su密码,不推荐使用
-K, --ask-become-pass
权限提升密码

  

4、示例

ansible all -m ping
ansible 192.168.77.* -m ping
ansible all -m command -a ifconfig
ansible all -m shell -a "ifconfig eth0 |grep 'inet addr' "
ansible -i "192.168.77.129,192.168.77.130" 192.168.77.129 -m ping
ansible -i hosts all --list-host
ansible -i hosts -l 192.168.77.130 all -m ping -t /tmp -vvvv
ansible web -l @retry_hosts.txt --list-hosts

  

2.2ansible-console

交互式命令执行界面

Usage: ansible-console <host-pattern> [options]

选项与ansible一致

2.3ansible-doc

该指令用于查看模块信息,常用参数有两个-l和 -s

Usage: ansible <host-pattern> [options]

1、选项

参数

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

  

2、示例

ansible-doc -l
ansible-doc yum
ansible-doc yum -s

  

2.4ansible-galaxy

ansible-galaxy 指令用于方便的从 https://galaxy.ansible.com/ 站点下载第三方扩展模块,我们可以形象的理解其类似于centos下的yum、python下的pip或easy_install

Usage: ansible-galaxy [delete|import|info|init|install|list|login|remove|search|setup] [–help] [options] …

示例:

ansible-galaxy install aeriscloud.docker  # 下载
ansible-galaxy init abc # 创建角色模板

  

2.5ansible-playbook

对于需反复执行的、较为复杂的任务,我们可以通过定义 Playbook 来搞定。Playbook 是 Ansible 真正强大的地方,它允许使用变量、条件、循环、以及模板,也能通过角色 及包含指令来重用既有内容。

Usage: ansible-playbook playbook.yml

相对于ansible,增加了下列选项:

1、参数

--flush-cache
清除fact缓存
--force-handlers
如果任务失败,也要运行handlers
--list-tags
列出所有可用的标签
--list-tasks
列出将要执行的所有任务
--skip-tags=SKIP_TAGS
跳过运行标记此标签的任务
--start-at-task=START_AT_TASK
在此任务处开始运行
--step
一步一步:在运行之前确认每个任务
-t TAGS, --tags=TAGS
只运行标记此标签的任务

  

2、示例

ansible-playbook -i hosts ssh-addkey.yml    # 指定主机清单文件
ansible-playbook -i hosts ssh-addkey.yml --list-tags # 列出tags
ansible-playbook -i hosts ssh-addkey.yml -T install # 执行install标签的任务

  

2.6ansible-pull

pull模式在被配置的机器上运行,速度很快。在这种模式下,你需要提供一个git仓库来供Ansible下载来配置你的机器。

Usage: ansible-pull -U <repository> [options]

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

示例:

ansible-vault create /tmp/123
# 创建加密文件
ansible-vault view /tmp/123
# 查看加密文件
ansible-vault encrypt /tmp/abc
# 加密文件
ansible-vault decrypt /tmp/abc
# 解密文件

  

三 ansbile配置文件详解

ansible配置文件只有一个,即ansible.cfg

ansible.cfg配置文件可以存在于多个地方,ansible读取配置文件的顺序依次是当前命令执行目录 -> 用户家目录下的.ansible.cfg -> /etc/ansible/ansible.cfg

3.1defaults

[defaults]

#inventory      = /etc/ansible/hosts   //定义Inventory
#library = /usr/share/my_modules/ //自定义lib库存放目录
#remote_tmp = ~/.ansible/tmp //零时文件远程主机存放目录
#local_tmp = ~/.ansible/tmp //零时文件本地存放目录
#forks = 5 //默认开启的并发数
#poll_interval = 15 //默认轮询时间间隔
#sudo_user = root //默认sudo用户
#ask_sudo_pass = True //是否需要sudo密码
#ask_pass = True //是否需要密码
#host_key_checking = False //首次连接是否检查key认证
#roles_path = /etc/ansible/roles //默认下载的Roles存放的目录
#log_path = /var/log/ansible.log //执行日志存放目录
#module_name = command //默认执行的模块
#action_plugins = /usr/share/ansible/plugins/action //action插件存放目录
#callback_plugins = /usr/share/ansible/plugins/callback //callback插件存放目录
#connection_plugins = /usr/share/ansible/plugins/connection //connection插件存放目录
#lookup_plugins = /usr/share/ansible/plugins/lookup //lookup插件存放目录
#vars_plugins = /usr/share/ansible/plugins/vars //vars插件存放目录
#filter_plugins = /usr/share/ansible/plugins/filter //filter插件存放目录
#test_plugins = /usr/share/ansible/plugins/test //test插件存放目录
#strategy_plugins = /usr/share/ansible/plugins/strategy //strategy插件存放目录
#fact_caching = memory //getfact缓存的主机信息存放方式
#retry_files_enabled = False
#retry_files_save_path = ~/.ansible-retry //错误重启文件存放目录

  

3.2privilege_escalation

[privilege_escalation]
#become=True //是否sudo
#become_method=sudo //sudo方式
#become_user=root //sudo后变为root用户
#become_ask_pass=False //sudo后是否验证密码

  

3.3paramiko_connection

[paramiko_connection]
#record_host_keys=False //不记录新主机的key以提升效率
#pty=False //禁用sudo功能

  

3.4ssh_connection

[ssh_connection]
#pipelining = False //管道加速功能,需配和requiretty使用方可生效

  

3.5selinux

[selinux]
#libvirt_lxc_noseclabel = yes //selinux配置

  

3.6colors

[colors]
#highlight = white
#verbose = blue
#warn = bright purple
#error = red
#debug = dark gray
#deprecate = purple
#skip = cyan
#unreachable = red
#ok = green
#changed = yellow
#diff_add = green
#diff_remove = red
#diff_lines = cyan

  

【原创】Centos8使用ansible的更多相关文章

  1. 【原创】Centos8安装ansible

    1.安装步骤 # 安装epel扩展源 dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rp ...

  2. ansible:安装nginx1.18.0(使用role功能)

    一,ansible使用role的用途? roles分别将变量/文件/任务/模板/handler等放置于单独的目录中, 并可以方便的include各目录下的功能 roles使playbook能实现代码被 ...

  3. ansible用authorized_key模块批量推送密钥到受控主机(免密登录)(ansible2.9.5)

    一,ansible的authorized_key模块的用途 用来配置密钥实现免密登录: ansible所在的主控机生成密钥后,如何把公钥上传到受控端? 当然可以用ssh-copy-id命令逐台手动处理 ...

  4. ansible使用script模块在受控机上执行脚本(ansible2.9.5)

    一,ansible的script模块的用途 script 模块用来在远程主机上执行 ansible 管理主机上的脚本, 即:脚本一直存在于 ansible 管理主机本地, 不需要手动拷贝到远程主机后再 ...

  5. ansible用user/group模块管理受控机上的用户和组(ansible2.9.5)

    一,ansible的user/group模块的用途: ansible的user模块用来实现:生成用户.删除用户等用户的管理ansible的group模块用来实现:生成组.删除组等组的管理 说明:刘宏缔 ...

  6. ansible使用file模块管理受控机的目录与文件(ansible2.9.5)

    一,ansible的file模块的用途 file 模块实现对文件的基本操作. 例如: 创建文件或目录 删除文件或目录 修改文件权限等 说明:刘宏缔的架构森林是一个专注架构的博客,地址:https:// ...

  7. ansible使用shell模块在受控机上执行命令(ansible2.9.5)

    一,ansible的shell模块和command模块的区别? shell模块:在远程主机上执行主控端发出的shell/python脚本 command模块:不能调用shell指令,没有bash的环境 ...

  8. ansible使用setup模块查看受控机的信息(ansible2.9.5)

    一,ansible的setup模块的用途: 用来获取主机的信息 说明:刘宏缔的架构森林是一个专注架构的博客,地址:https://www.cnblogs.com/architectforest 对应的 ...

  9. ansible用get_url模块在受控机下载文件(ansible2.9.5)

    一,ansible的get_url模块用途: get_url模块可以在受控机下载文件 可以理解成从受控端执行wget 下载的url支持:http | https | ftp   三种协议 说明:刘宏缔 ...

随机推荐

  1. Java 程序员每天都在做什么?

    作为一名 在大.中.小微企业都待过 的 Java 开发者,今天和大家分享下自己在不同公司的工作日常和收获.包括一些个人积累的工作提升经验,以及一些 Java 学习的方法和资源. 先从我的第一份 Jav ...

  2. AJAX基本操作

    XMLHttpRequest对象: XMLHttpRequest 是 AJAX 的基础.所有现代浏览器均支持 XMLHttpRequest 对象(IE5 和 IE6 使用 ActiveXObject) ...

  3. CCF(除法):线段树区间修改(50分)+线段树点修改(100分)+线段树(100分)

    除法 201709-5 这道题有很多种方法来做,最常用的就是线段树和树状数组. 如果使用线段树来做,就会想到区间修改的update函数.但是这里可能会涉及到v是1或者a[j]是0的情况,所以用这种方法 ...

  4. POJ-1182(经典带权并查集)

    食物链 POJ-1182 一个很好的分析博客:https://blog.csdn.net/niushuai666/article/details/6981689 三种关系:两者同类,吃父节点,被父节点 ...

  5. 使用createrepo构建本地yum仓库

    rpm包安装的时候会有很多软件会出现因为其他依赖包没有,而导致安装失败的情况.一般可以连接外网的时候我们直接使用 yum 进行安装,可以为我们解决依赖包关系,但是很多工作环境下是没有外网的,内网情况下 ...

  6. JS五种绑定彻底弄懂this,默认绑定、隐式绑定、显式绑定、new绑定、箭头函数绑定详解(转载)

    目录 壹 ❀ 引 贰 ❀ this默认绑定 叁 ❀ this隐式绑定 1.隐式绑定 2.隐式丢失 肆 ❀ this显式绑定 伍 ❀ new绑定 陆 ❀ this绑定优先级 柒 ❀ 箭头函数的this ...

  7. 医学图像配准 | Voxelmorph 微分同胚 | MICCAI2019

    文章转载:微信公众号「机器学习炼丹术」 作者:炼丹兄(已授权) 联系方式:微信cyx645016617(欢迎交流) 论文题目:'Unsupervised Learning for Fast Proba ...

  8. C语言入门-mingw64安装+配置

    OK,大家好,结合上期所说,本期让我们来配置编译器吧! 首先先下载mingw64离线包,官网下载慢,可以去群里下载,*.7z格式(有些同学可能没有解压软件,为了照顾这部分同学,笔者提供*.exe格式的 ...

  9. Vue ElementUI表格table中使用select下拉框组件时获取改变之前的值

    目前项目中有一个场景,就是表格中显示下拉框,并且下拉框的值可以更改,更改后提交后台更新.因为这个操作比较重要,所以切换时会有一个提示框,提示用户是否修改,是则走提交逻辑,否则直接返回,什么也不做. 之 ...

  10. ch1_6_6求解门禁系统问题

    import java.util.HashMap; import java.util.Scanner; public class ch1_6_6求解门禁系统问题 { public static voi ...