5.4.5.2. 本地测试 Kubernetes Collection
operator 开发人员可以从其本地机器运行 Ansible 代码,而不是每次运行和重建 Operator。
先决条件
- 初始化基于 Ansible 的 Operator 项目,并使用 Operator SDK 创建具有生成 Ansible 角色的 API
- 安装 Kubernetes Collection for Ansible
流程
在基于 Ansible 的 Operator 项目目录中,使用您想要的 Ansible 逻辑来修改
roles/<kind> /tasks/main.yml
文件。在创建 API 时,当使用--generate-role
标志时,会创建roles/<kind> /
目录。<kind>
可替换与您为 API 指定的类型匹配。以下示例根据名为
state
的变量值创建并删除配置映射:--- - name: set ConfigMap example-config to {{ state }} community.kubernetes.k8s: api_version: v1 kind: ConfigMap name: example-config namespace: default 1 state: "{{ state }}" ignore_errors: true 2
修改
roles/<kind> /defaults/main.yml
文件,将默认state
设置为present
:--- state: present
通过在项目目录的顶层创建一个
playbook.yml
文件来创建一个 Ansible playbook,其中包含您的<kind>
角色:--- - hosts: localhost roles: - <kind>
运行 playbook:
$ ansible-playbook playbook.yml
输出示例
[WARNING]: provided hosts list is empty, only localhost is available. Note that the implicit localhost does not match 'all' PLAY [localhost] ******************************************************************************** TASK [Gathering Facts] ******************************************************************************** ok: [localhost] TASK [memcached : set ConfigMap example-config to present] ******************************************************************************** changed: [localhost] PLAY RECAP ******************************************************************************** localhost : ok=2 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
验证配置映射是否已创建:
$ oc get configmaps
输出示例
NAME DATA AGE example-config 0 2m1s
重新运行 playbook,设置
state
为absent
:$ ansible-playbook playbook.yml --extra-vars state=absent
输出示例
[WARNING]: provided hosts list is empty, only localhost is available. Note that the implicit localhost does not match 'all' PLAY [localhost] ******************************************************************************** TASK [Gathering Facts] ******************************************************************************** ok: [localhost] TASK [memcached : set ConfigMap example-config to absent] ******************************************************************************** changed: [localhost] PLAY RECAP ******************************************************************************** localhost : ok=2 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
验证配置映射是否已删除:
$ oc get configmaps