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进行投诉反馈,一经查实,立即删除!