ansible 备忘清单(一)

2023-12-26 18:17:06

笔者:
?? ?把以前的手写笔记电子化吧,顺便当作复习。

?基础命令

命令

参数

备注

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

指定用户组

文章来源:https://blog.csdn.net/cds992/article/details/135218906
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。