LoginSignup
0
0

More than 1 year has passed since last update.

AnsibleからOCIモジュールでcloud-initを操作する

Last updated at Posted at 2021-05-21

OCI上にインスタンスを作成する時にユーザを作成したい

AnsibleでOCI上にインスタンスを作る時に初回設定として、新しいユーザを作成しておきたい。
※AnsibleのOCIモジュール/CLIはインストール/設定済み

OCIモジュールでデプロイする

モジュールの詳細は以下
https://github.com/oracle/oci-ansible-collection/blob/master/docs/collections/oracle/oci/oci_compute_instance_module.rst

ファイル構造

.
|--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の参考

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0