This documentation is for a release that is no longer maintained
See documentation for the latest supported version 3 or the latest supported version 4.12.2.4.3. Operator 内での k8s Ansible モジュールのテスト
k8s
Ansible モジュールをローカルで使用することに慣れたら、カスタムリソース (CR) の変更時に Operator 内で同じ Ansible ロジックをトリガーできます。この例では、Ansible ロールを、Operator が監視する特定の Kubernetes リソースにマップします。このマッピングは監視ファイルで実行されます。
12.2.4.3.1. Ansible ベース Operator のローカルでのテスト リンクのコピーリンクがクリップボードにコピーされました!
Ansible ワークフローのテストをローカルで実行することに慣れたら、ローカルに実行される Ansible ベースの Operator 内でロジックをテストできます。
これを実行するには、Operator プロジェクトの上部ディレクトリーから operator-sdk run --local
コマンドを使用します。このコマンドは ./watches.yaml
ファイルから読み取り、 ~/.kube/config
ファイルを使用して k8s
Ansible モジュールが実行するように Kubernetes クラスターと通信します。
手順
run --local
コマンドは./watches.yaml
ファイルから読み取るため、Operator の作成者はいくつかのオプションを選択できます。role
が単独で残される場合 (デフォルトでは/opt/ansible/roles/<name>
)、ロールを Operator から/opt/ansible/roles/
ディレクトリーに直接コピーする必要があります。これは、現行ディレクトリーからの変更が反映されないために複雑になります。この代わりに、
role
フィールドを現行ディレクトリーを参照するように変更し、既存の行をコメントアウトします。- version: v1alpha1 group: foo.example.com kind: Foo # role: /opt/ansible/roles/Foo role: /home/user/foo-operator/Foo
- version: v1alpha1 group: foo.example.com kind: Foo # role: /opt/ansible/roles/Foo role: /home/user/foo-operator/Foo
Copy to Clipboard Copied! Toggle word wrap Toggle overflow カスタムリソース定義 (CRD) およびカスタムリソース (CR)
Foo
の適切なロールベースアクセス制御 (RBAC) 定義を作成します。operator-sdk
コマンドは、deploy/
ディレクトリー内にこれらのファイルを自動生成します。oc create -f deploy/crds/foo_v1alpha1_foo_crd.yaml oc create -f deploy/service_account.yaml oc create -f deploy/role.yaml oc create -f deploy/role_binding.yaml
$ oc create -f deploy/crds/foo_v1alpha1_foo_crd.yaml $ oc create -f deploy/service_account.yaml $ oc create -f deploy/role.yaml $ oc create -f deploy/role_binding.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow run --local
コマンドを実行します。operator-sdk run --local
$ operator-sdk run --local [...] INFO[0000] Starting to serve on 127.0.0.1:8888 INFO[0000] Watching foo.example.com/v1alpha1, Foo, default
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Operator はリソース
Foo
でイベントを監視しているため、CR の作成により、Ansible ロールの実行がトリガーされます。deploy/cr.yaml
ファイルを表示します。apiVersion: "foo.example.com/v1alpha1" kind: "Foo" metadata: name: "example"
apiVersion: "foo.example.com/v1alpha1" kind: "Foo" metadata: name: "example"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow spec
フィールドは設定されていないため、Ansible は追加の変数なしで起動します。次のセクションでは、追加の変数が CR から Ansible に渡される方法について説明します。このため、Operator に同じでデフォルト値を設定することが重要になります。デフォルト変数
state
をpresent
に設定し、Foo
の CR インスタンスを作成します。oc create -f deploy/cr.yaml
$ oc create -f deploy/cr.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow namespace
test
が作成されていることを確認します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow deploy/cr.yaml
ファイルを、state
フィールドをabsent
に設定するように変更します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 変更を適用し、namespace が定義されていることを確認します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow