ansible playbook

Roles

Roles 就是通过分别将变量、文件、任务、模块及处理器放置于单独的目录中,并可以便捷地 include 它们

http://www.ansible.com.cn/docs/playbooks_roles.html#roles

1
2
3
4
5
6
7
8
9
10
11
└── roles
└── k8s
├── files 用来存放由 copy 模块或 script 模块调用的文件
├── library
├── tasks 包含一个 main.yml 文件,用于定义此角色的任务列表,此文件可以使用 include 包含其它的位于此目录的 task 文件
└── vars 包含一个 main.yml 文件,用于定义此角色用到的变量
└──templates 用来存放正则模板,template 模块会自动在此目录中寻找正则模板文件
└──handlers 此目录应当包含一个 main.yml 文件,用于定义此角色中触发条件时执行的动作
└──defaults 此目录应当包含一个 main.yml 文件,用于为当前角色设定默认变量
└──meta 此目录应当包含一个 main.yml 文件,用于定义此角色的特殊设定及其依赖关系
.......

根据情况删减目录

目录

cni /opt/cni/bin

cni config /etc/cni/net.d

containerd /etc/containerd/config.toml

crictl /etc/crictl.yaml

copy

1
cs@debian:~$ ansible k8s-img -m copy -a "src=/opt/kubernetes/cni/net.d/10-flannel.conflist dest=/etc/cni/net.d/ mode=0644"

src参数 :用于指定需要copy的文件或目录。

dest参数 :用于指定文件将被拷贝到远程主机的哪个目录中,dest为必须参数。

content参数 :当不使用src指定拷贝的文件时,可以使用content直接指定文件内容,src与content两个参数必有其一,否则会报错。

force参数 : 当远程主机的目标路径中已经存在同名文件,并且与ansible主机中的文件内容不同时,是否强制覆盖,可选值有yes和no,默认值为yes,表示覆盖,如果设置为no,则不会执行覆盖拷贝操作,远程主机中的文件保持不变。

backup参数 : 当远程主机的目标路径中已经存在同名文件,并且与ansible主机中的文件内容不同时,是否对远程主机的文件进行备份,可选值有yes和no,当设置为yes时,会先备份远程主机中的文件,然后再将ansible主机中的文件拷贝到远程主机。

owner参数 : 指定文件拷贝到远程主机后的属主,但是远程主机上必须有对应的用户,否则会报错。

group参数 : 指定文件拷贝到远程主机后的属组,但是远程主机上必须有对应的组,否则会报错。

mode参数 : 指定文件拷贝到远程主机后的权限,如果你想将权限设置为”rw-r–r–“,则可以使用mode=0644表示,如果你想要在user对应的权限位上添加执行权限,则可以使用mode=u+x表示。

notify & handlers

listen

register

failed_when

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
tasks:
- name: Template Nginx configuration
template:
src: path/to/your/nginx.conf.j2 # 你的nginx配置文件模板
dest: /etc/nginx/nginx.conf # Nginx配置文件的路径
owner: root
group: root
mode: '0644'
notify:
- Test Nginx configuration
- Restart Nginx

handlers:
- name: Test Nginx configuration
command: nginx -t
listen: "check config" # 这允许从tasks中使用notify来触发这个handler
ignore_errors: true # 忽略错误,让下面的handler继续执行

- name: Restart Nginx
service:
name: nginx
state: restarted
register: service_status
failed_when: service_status.rc != 0
listen: "check config" # 只有当上面的handler成功时才会执行这个

tag

指定要执行的任务标签

1
2
3
4
5
6
7
8
9
- name: First task with a specific tag
command: echo "First task"
tags:
- first_task

- name: Second task with a different tag
command: echo "Second task"
tags:
- second_task

ansible-playbook your-playbook.yml –tags first_task

点击打赏
文章目录
  1. 1. Roles
    1. 1.1. copy
    2. 1.2. notify & handlers
    3. 1.3. tag
载入天数...载入时分秒... ,