OCI上にインスタンスを作成する時にユーザを作成したい
AnsibleでOCI上にインスタンスを作る時に初回設定として、新しいユーザを作成しておきたい。
※AnsibleのOCIモジュール/CLIはインストール/設定済み
OCIモジュールでデプロイする
ファイル構造
.
|--files
| `--cloud-init_user-data.yml
`--tasks
`--main.yml
tasks/main.yml
---
- name: Create instance
oracle.oci.oci_compute_instance:
display_name: "myinstance1"
availability_domain: "Uocm:PHX-AD-1"
compartment_id: "ocid1.compartment.oc1..xxxxxEXAMPLExxxxx...vm62xq"
shape: "VM.Standard2.1"
metadata:
ssh_authorized_keys: "ssh-rsa BBBB.....==" # <公開鍵> → opcの公開鍵設定
user_data: "{{ lookup('file','cloud-init_user-data.yml') | b64encode }}" #ここがポイント
# user_dataはcloud-init_user-data.ymlに記載しておく。
files/cloud-init_user-data.yml
#cloud-config # お約束 無いと動かない
groups:
- opegrp # groupを追加する場合は追記(※gidの指定が出来ない。。)
users:
- default # お約束 無いとユーザが追加出来ない
- name: operator # 追加するuser名(※uidの指定は出来ない。。)
primary_group: opegrp
sudo: [ "ALL=(ALL) NOPASSWD:ALL" ]
ssh_authorized_keys:
- "ssh-rsa BBBB.....==" # <公開鍵> → operatorユーザの公開鍵
runcmd:
- 'usermod -u 1200 operator' # uidの指定が出来ない為、runcmdから変更する
- 'groupmod -g 2000 opegrp' # gidの指定が出来ない為、runcmdから変更する
インスタンス上のuser-data
cloud-initのuser-dataは以下に格納されている。
実行した後、うまく動いてない場合などはこちらにきちんと想定どおりのデータが連携されているか確認する。
/var/lib/cloud/instances/OCIインスタンスのID/user-data.txt
cloud-initの参考