5.4.5.2. 로컬에서 Kubernetes 컬렉션 테스트
Operator 개발자는 매번 Operator를 실행하고 다시 빌드하는 대신 로컬 머신에서 Ansible 코드를 실행할 수 있습니다.
사전 요구 사항
- Ansible 기반 Operator 프로젝트를 초기화하고 Operator SDK를 사용하여 생성한 Ansible 역할이 있는 API 생성
- Ansible용 Kubernetes 컬렉션 설치
프로세스
Ansible 기반 Operator 프로젝트 디렉터리에서 원하는 Ansible 논리로
roles/<kind>/tasks/main.yml
파일을 수정합니다.roles/<kind>/
디렉터리는 API를 생성하는 동안--generate-role
플래그를 사용할 때 생성됩니다. 교체 가능한<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 플레이북을 생성하고<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
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