ansible 备忘清单(一)
笔者:
?? ?把以前的手写笔记电子化吧,顺便当作复习。
?基础命令
命令 | 参数 | 备注 |
ansible | --version | 查看版本号 |
ansible-doc | --help | 查看帮助信息 |
-l |--list | 查看所有模块 | |
-s | 查看模块摘要 | |
Ansible servers | -I |--list | 指定主机文件配置 |
-a | 指定模块所需要的参数 | |
-m | 指定模块 | |
Ansible-inventory | 用于管理主机配置文件 | |
-i | 指定文件配置 | |
--list | 以默认的json格式列出所有主机 | |
--graph | 以图形界面输出主机清单 |
主机清单文件
默认配置文件位于/etc/ansible/hosts
[servers]? #定义一个主机组
192.168.1.1? ? ? ????????????????????????????????? #ip
node01? ? ? ? ? ? ? ?????????????????????????????????#主机名
192.168.1.2:23333? ? ? ? ? ? ? ? ? ? ? ? ? ? ?#23333为ssh的默认端口
node02:23333????????????????????????????????
192.168.2.[100:200]? ? ? ? ? ? ? ? ? ? ? ? ? ?#ip 范围
mst[10:20]? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? #主机名范围
192.168.3.[100:200]:23333? ? ? ? ? ? ? ? #IP范围内的所有主机,默认ssh口 23333
[t1]
169.254.1.1? ? ? ? http_port=808? ? ??
? ? ? ? ? ? ? ? ? ? ? ? ?#? ~~~~~~~~~~~~~~
? ? ? ? ? ? ? ? ? ? ? ? ? #? ?主机内的变量名=变量值
[uat]
node01
node02
[uat:vars]? ? ? ?
ntp-server=ntp1.aliyun.com? ? ? ? ? # uat组内公用同一个变量
[test]
controlplane env=prod
node01 env=dev? ??
playbook.yaml基本格式
- name: helloworld? ? ? ? ? ? ? ? #playbook名称
? hosts: test
? vars:
? gather_facts: True? ? ? ? ? ? ? ? #收集远程主机facts信息
? become: False? ? ? ? ? ? ? ? ? ? ?#是否切换用户
? tasks:
? ? - name: helloworld? {{ ansible_date_time.iso8601_basic_short }}??
? ? ? copy:
? ? ? ? ?src:? ?/var/tmp/hello.tar.gz
? ? ? ? ?dest: /opt/h.tar.gz
? ? - name: Create the prod_engineer user
? ? ? user:
? ? ? ? name: prod_engineer
? ? ? ? comment: Prod engineer?
? ? ? when: '"prod" in env'? ? ? ? ? ?#只有在主机变量满足时才执行? ? - name: Create the dev_engineer user and give admin
? ? ? user:
? ? ? ? name: dev_engineer
? ? ? ? comment: Dev engineer
? ? ? ? groups: admin
? ? ? ? generate_ssh_key: yes
? ? ? ? ssh_key_bits: 2048
? ? ? ? ssh_key_file: .ssh/id_rsa
? ? ? when: '"dev" in env'? ??? ? - name: get shell result and set a variable
? ? ? shell: uptime22?????
? ? ? failed_when: false? ? ? ? ? ? ? ? #执行失败时不执行后续的任务
? ? ? register: uptime_r? ? ?#将运行结果赋值给变量uptime_r
????- name: ping? ? ? ? ? ? ? ? ? ? ? ? #上一个任务失败, 本任务不执行
? ? ? shell: ping baidu.com
? ? ?
?jinja2 file
run_once: yes? ? ? ? ? ? ? ? ? ? ? ?# 参数表示只运行一次
delegate_to: localhost?? ? ? ? ?#? 任务只在ansible本机运行
?
- for循环
{% for host in ansible_play_hosts_all %}
{{ host?}}? #打印变量
{% endfor?%}
- if判断:
{%?if?'day'?in?hostvars[host].uptime.stdout?%}
?{{?hostvars[host].ansible_hostname?}}?-?has?not?rebooted?today
{%?endif?%}
模块清单
忘记了就看ansible-doc -s [模块名]
模块 | 参数 | 用途 |
uri | 用于测试到某站点到联通性,并返回结果???????? | |
url | 需要测试的地址 | |
return_content | 是否返回结果(yes) | |
Dest | 下载的文件放在指定的路径 | |
debug | 用于答应执行过程中的消息/变量 | |
msg | 基础消息 | |
Var | 变量 (register中定义的)或者 fasts收到的变量名 {{ ansible_date_time }} | |
group_by | 根据facts (gather_facts中获得)中的某个字段进行分组 | |
key | 某个指定的字段 | |
parents | 可选,父级所属组 | |
lineinfile | 管理txt中的行数据 | |
path | 指定的文件 | |
Regex | 使用正则选取指定的行 '^var’ | |
Line | 替换指定的值 | |
unarchive | 用于文件解压 | |
src | 指定压缩包 | |
dest | 解压的绝对路径 | |
archive | 用于文件压缩 | |
dest | 生成的压缩包路径 | |
path | 要压缩的文件路径或者列表 (绝对路径) | |
Template | 使用j2模版文件,并将特定文件传送到远程目录 | |
src | j2模版文件,文件中可以加入变量 | |
dest???????? | 目的路径 | |
setup | 查看远程主机信息 | |
Filter | 查看指定的变量eg: ansible_date_time | |
shell | 执行shell脚本,命令用分号; 隔开 | |
ping | 测试到主机的联通性 | |
copy | 用于文件复制 | |
src | 源路径 | |
dest | 目的路径 | |
checksum | 检查文件的一致性,sha1 | |
file | 管理文件&文件属性,可以创建文件夹,调整文件权限等 | |
path | 必须, 指定路径 | |
state | touch 创建空文件,若已存在不处理 directory 创建目录,若已存在不处理 file 确保文件存在并具有指定属性 link 创建连接符号 src指定源路径 hard 创建应连接 src指定源路径 absent 删除文件或目录 | |
src | 指定源路径,搭配其他参数使用 | |
owner | 指定文件所有者 | |
group | 指定用户组 |
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!