searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

三种常用的ansible yaml配置

2024-08-05 09:31:31
40
0

创建目录

- name: ctgcache | Create addon dir
  file:
    path: "{{ kube_config_dir }}/path"
    state: directory
    owner: root
    group: root
    mode: 0755
  when:
    - inventory_hostname == groups['kube_control_plane'][0]

 

这段文字是Ansible playbook的一部分,它用于自动化IT基础设施的配置管理。

1. `- name: ctgcache | Create addon dir`:这是任务的描述行,其中`name`字段用于给这个任务命名,方便在日志或错误报告中引用。这里的任务名为`ctgcache | Create addon dir`,这通常意味着创建一个附加组件(addon)的目录,可能是在部署Kubernetes集群时使用。

2. `file:`:这是一个模块名,表示接下来的配置是关于文件或目录的。

3. `path: "{{ kube_config_dir }}/path"`:指定了要操作的目录路径,其中`kube_config_dir`是一个变量,代表Kubernetes配置目录的位置,而`/path`则是相对于`kube_config_dir`的子目录。实际的目录路径将通过变量`kube_config_dir`的值来动态生成。

4. `state: directory`:指明了要确保该路径是一个目录状态。如果路径不存在,Ansible会创建它;如果存在但不是目录,则会失败。

5. `owner: root` 和 `group: root`:设置了目录的所有者和所属组,都是`root`,这意味着目录将由系统管理员账户拥有。

6. `mode: 0755`:定义了目录的权限模式。`0755`是一个八进制数,表示权限设置为所有者可读写执行(rwx),其他人可读可执行(rx)。这是一种常见的权限设置,允许管理员完全控制目录,同时允许其他用户和进程读取和执行目录中的文件。

7. `when:`:后面跟的是条件语句,用来指定任务在什么情况下执行。这里的条件是`inventory_hostname == groups['kube_control_plane'][0]`,这意味着任务只在被标记为Kubernetes控制平面节点的第一个主机上执行。`inventory_hostname`是Ansible中用于标识当前处理主机的变量,而`groups['kube_control_plane'][0]`则引用了控制平面节点列表中的第一个元素。

 

复制文件

- name: ctgcache | Copy ctgcache yaml files
  template:
    src: "{{ item.src}}"
    dest: "{{ kube_config_dir }}/addons/ctgcache-desktop/{{ item.dest}}"
    mode: "0644"
  with_items:
    - {src: "redis-desktop-configmap.yaml.j2", dest: "redis-desktop-configmap.yaml"}
    - {src: "redis-desktop-secret.yaml.j2", dest: "redis-desktop-secret.yaml"}
    - {src: "redis-desktop-svc.yaml.j2", dest: "redis-desktop-svc.yaml"}
    - {src: "redis-desktop-rbac.yaml.j2", dest: "redis-desktop-rbac.yaml"}
    - {src: "redis-desktop-statefulset.yaml.j2", dest: "redis-desktop-statefulset.yaml"}
  when:
    - inventory_hostname == groups['kube_control_plane'][0]

 

这段文字描述的是一个Ansible任务片段,通常用于自动化部署、配置管理和应用维护,其目的是复制和配置特定的YAML文件到指定目录下。

1.- `name: ctgcache | Copy ctgcache yaml files`:这是任务的名称,表明了任务的目的——复制ctgcache相关的YAML文件。

2.- `template:`:这指示了Ansible将使用模版引擎处理并复制文件。模版引擎允许在文件中嵌入变量和逻辑,以便生成最终的配置文件。

3.- `src:` 和 `dest:`:这两个参数分别指定了源文件路径和目标文件路径。源文件路径使用Jinja2模版语法,可能包含变量和逻辑,而目标文件路径则直接指向Kubernetes配置目录下的具体文件名。

4.- `mode: "0644"`:这设置了文件权限,`0644`表示文件所有者有读写权限,组和其他用户有只读权限,这是一种常见的权限设置,确保文件的安全性和可读性。

5.- `with_items:`:这是一个迭代操作,意味着这个任务将对列表中的每一项执行相同的动作。这里列出的每一项都是要被处理的文件,包括从Jinja2模版文件生成实际的YAML配置文件。

6.- `when:`:这是一个条件语句,控制任务的执行。这里的条件是只有当主机的名称等于Kubernetes控制平面组的第一个成员时,该任务才会执行。这通常是为了确保只在一个特定的节点上执行此任务,避免重复或冲突。

 

执行kube apply

- name: ctgcache | kubectl apply ctgcache deployment file
  kube:
    kubectl: "{{ bin_dir }}/kubectl"
    filename: "{{ kube_config_dir }}/addons/ctgcache-desktop/{{ item }}"
    state: "latest"
  with_items:
    - redis-desktop-configmap.yaml
    - redis-desktop-secret.yaml
    - redis-desktop-svc.yaml
    - redis-desktop-rbac.yaml
    - redis-desktop-statefulset.yaml
  when:
    - inventory_hostname == groups['kube_control_plane'][0]

这段文字用于在Kubernetes集群中部署一系列与ctgcache相关的资源。

1. `- name: ctgcache | kubectl apply ctgcache deployment file`

   这一行定义了一个任务的名称,描述了将使用`kubectl apply`命令来部署与ctgcache相关的文件。

2. `kube:`这是一个任务块的开始,所有的子项都属于这个名为`kube`的任务块。

3. `kubectl: "{{ bin_dir }}/kubectl"`定义了`kubectl`命令的路径,它会从变量`bin_dir`中获取实际路径,通常是用来指定二进制执行文件的目录。

4. `filename: "{{ kube_config_dir }}/addons/ctgcache-desktop/{{ item }}"`

   指定了要应用的YAML文件的位置,这些文件位于`kube_config_dir`目录下的`addons/ctgcache-desktop`子目录中,并且文件名由循环中的`item`变量确定。

5. `state: "latest"`这个参数在这里可能不是标准的`kubectl`命令参数,看起来像是为了适应Ansible的语法而设计的。通常,在Ansible中`state: latest`意味着要确保资源是最新的版本,但在`kubectl apply`中并不直接使用这个参数。这可能是为了指示Ansible执行更新操作。

6. `with_items:`开始一个循环,将遍历列出的所有YAML文件并分别应用它们。

7. 列出的文件包括:

   - `redis-desktop-configmap.yaml`

   - `redis-desktop-secret.yaml`

   - `redis-desktop-svc.yaml`

   - `redis-desktop-rbac.yaml`

   - `redis-desktop-statefulset.yaml`

   这些文件包含了创建ConfigMap、Secret、Service、RBAC角色和StatefulSet的定义,这些都是Kubernetes中常见的资源类型。

8. `when:`定义了任务执行的条件,只有当主机名等于控制平面组(`kube_control_plane`)的第一个成员时,这个任务才会被执行。这意味着部署操作只在集群的主节点上执行,而不是在所有节点上执行。

0条评论
作者已关闭评论
y****n
4文章数
0粉丝数
y****n
4 文章 | 0 粉丝
y****n
4文章数
0粉丝数
y****n
4 文章 | 0 粉丝
原创

三种常用的ansible yaml配置

2024-08-05 09:31:31
40
0

创建目录

- name: ctgcache | Create addon dir
  file:
    path: "{{ kube_config_dir }}/path"
    state: directory
    owner: root
    group: root
    mode: 0755
  when:
    - inventory_hostname == groups['kube_control_plane'][0]

 

这段文字是Ansible playbook的一部分,它用于自动化IT基础设施的配置管理。

1. `- name: ctgcache | Create addon dir`:这是任务的描述行,其中`name`字段用于给这个任务命名,方便在日志或错误报告中引用。这里的任务名为`ctgcache | Create addon dir`,这通常意味着创建一个附加组件(addon)的目录,可能是在部署Kubernetes集群时使用。

2. `file:`:这是一个模块名,表示接下来的配置是关于文件或目录的。

3. `path: "{{ kube_config_dir }}/path"`:指定了要操作的目录路径,其中`kube_config_dir`是一个变量,代表Kubernetes配置目录的位置,而`/path`则是相对于`kube_config_dir`的子目录。实际的目录路径将通过变量`kube_config_dir`的值来动态生成。

4. `state: directory`:指明了要确保该路径是一个目录状态。如果路径不存在,Ansible会创建它;如果存在但不是目录,则会失败。

5. `owner: root` 和 `group: root`:设置了目录的所有者和所属组,都是`root`,这意味着目录将由系统管理员账户拥有。

6. `mode: 0755`:定义了目录的权限模式。`0755`是一个八进制数,表示权限设置为所有者可读写执行(rwx),其他人可读可执行(rx)。这是一种常见的权限设置,允许管理员完全控制目录,同时允许其他用户和进程读取和执行目录中的文件。

7. `when:`:后面跟的是条件语句,用来指定任务在什么情况下执行。这里的条件是`inventory_hostname == groups['kube_control_plane'][0]`,这意味着任务只在被标记为Kubernetes控制平面节点的第一个主机上执行。`inventory_hostname`是Ansible中用于标识当前处理主机的变量,而`groups['kube_control_plane'][0]`则引用了控制平面节点列表中的第一个元素。

 

复制文件

- name: ctgcache | Copy ctgcache yaml files
  template:
    src: "{{ item.src}}"
    dest: "{{ kube_config_dir }}/addons/ctgcache-desktop/{{ item.dest}}"
    mode: "0644"
  with_items:
    - {src: "redis-desktop-configmap.yaml.j2", dest: "redis-desktop-configmap.yaml"}
    - {src: "redis-desktop-secret.yaml.j2", dest: "redis-desktop-secret.yaml"}
    - {src: "redis-desktop-svc.yaml.j2", dest: "redis-desktop-svc.yaml"}
    - {src: "redis-desktop-rbac.yaml.j2", dest: "redis-desktop-rbac.yaml"}
    - {src: "redis-desktop-statefulset.yaml.j2", dest: "redis-desktop-statefulset.yaml"}
  when:
    - inventory_hostname == groups['kube_control_plane'][0]

 

这段文字描述的是一个Ansible任务片段,通常用于自动化部署、配置管理和应用维护,其目的是复制和配置特定的YAML文件到指定目录下。

1.- `name: ctgcache | Copy ctgcache yaml files`:这是任务的名称,表明了任务的目的——复制ctgcache相关的YAML文件。

2.- `template:`:这指示了Ansible将使用模版引擎处理并复制文件。模版引擎允许在文件中嵌入变量和逻辑,以便生成最终的配置文件。

3.- `src:` 和 `dest:`:这两个参数分别指定了源文件路径和目标文件路径。源文件路径使用Jinja2模版语法,可能包含变量和逻辑,而目标文件路径则直接指向Kubernetes配置目录下的具体文件名。

4.- `mode: "0644"`:这设置了文件权限,`0644`表示文件所有者有读写权限,组和其他用户有只读权限,这是一种常见的权限设置,确保文件的安全性和可读性。

5.- `with_items:`:这是一个迭代操作,意味着这个任务将对列表中的每一项执行相同的动作。这里列出的每一项都是要被处理的文件,包括从Jinja2模版文件生成实际的YAML配置文件。

6.- `when:`:这是一个条件语句,控制任务的执行。这里的条件是只有当主机的名称等于Kubernetes控制平面组的第一个成员时,该任务才会执行。这通常是为了确保只在一个特定的节点上执行此任务,避免重复或冲突。

 

执行kube apply

- name: ctgcache | kubectl apply ctgcache deployment file
  kube:
    kubectl: "{{ bin_dir }}/kubectl"
    filename: "{{ kube_config_dir }}/addons/ctgcache-desktop/{{ item }}"
    state: "latest"
  with_items:
    - redis-desktop-configmap.yaml
    - redis-desktop-secret.yaml
    - redis-desktop-svc.yaml
    - redis-desktop-rbac.yaml
    - redis-desktop-statefulset.yaml
  when:
    - inventory_hostname == groups['kube_control_plane'][0]

这段文字用于在Kubernetes集群中部署一系列与ctgcache相关的资源。

1. `- name: ctgcache | kubectl apply ctgcache deployment file`

   这一行定义了一个任务的名称,描述了将使用`kubectl apply`命令来部署与ctgcache相关的文件。

2. `kube:`这是一个任务块的开始,所有的子项都属于这个名为`kube`的任务块。

3. `kubectl: "{{ bin_dir }}/kubectl"`定义了`kubectl`命令的路径,它会从变量`bin_dir`中获取实际路径,通常是用来指定二进制执行文件的目录。

4. `filename: "{{ kube_config_dir }}/addons/ctgcache-desktop/{{ item }}"`

   指定了要应用的YAML文件的位置,这些文件位于`kube_config_dir`目录下的`addons/ctgcache-desktop`子目录中,并且文件名由循环中的`item`变量确定。

5. `state: "latest"`这个参数在这里可能不是标准的`kubectl`命令参数,看起来像是为了适应Ansible的语法而设计的。通常,在Ansible中`state: latest`意味着要确保资源是最新的版本,但在`kubectl apply`中并不直接使用这个参数。这可能是为了指示Ansible执行更新操作。

6. `with_items:`开始一个循环,将遍历列出的所有YAML文件并分别应用它们。

7. 列出的文件包括:

   - `redis-desktop-configmap.yaml`

   - `redis-desktop-secret.yaml`

   - `redis-desktop-svc.yaml`

   - `redis-desktop-rbac.yaml`

   - `redis-desktop-statefulset.yaml`

   这些文件包含了创建ConfigMap、Secret、Service、RBAC角色和StatefulSet的定义,这些都是Kubernetes中常见的资源类型。

8. `when:`定义了任务执行的条件,只有当主机名等于控制平面组(`kube_control_plane`)的第一个成员时,这个任务才会被执行。这意味着部署操作只在集群的主节点上执行,而不是在所有节点上执行。

文章来自个人专栏
FoTech技术学习
4 文章 | 1 订阅
0条评论
作者已关闭评论
作者已关闭评论
0
0