0%

Salt on IDCF クラウド - Part7: まとめ

これまでの連載のまとめです。

作成した設定ファイルは、GitHubのsalt-configリポジトリにあります。

salt-configの使い方

最初にIDCFクラウドでUbuntu14.04のインスタンスを3台用意します。作成するときにhostnameを指定できるので、それぞれ以下のhostnameをつけます。

  • salt
  • minion1
  • minion2

master

masterにログインして、git cloneします。

$ apt-get update && apt-get install -y git
$ git clone --recursive https://github.com/masato/salt-config.git /srv/salt/config
$ cd /srv/salt/config

Pillarの編集をします。IDCFオブジェクトストレージのaccess_keyとsecret_keyを指定します。

$ cd /srv/salt/config/pillar
$ cp s3cmd.sls.sample s3cmd.sls
$ vi s3cmd.sls
s3cmd:
access_key: xxx
secret_key: xxx

users/init.slsのユーザー名、パスワード、公開鍵を環境にあわせて編集します。

$ cd /srv/salt/config/pillar/users
$ cp init.sls.sample init.sls
$ vi init.sls
users:
mshimizu:
fullname: Masato Shimizu
password: xxx
sudouser: True
sudo_rules:
- ALL=(ALL) NOPASSWD:ALL
groups:
- docker
ssh_auth:
- ssh-rsa AAAABxxx

/etc/salt/master.d/master.confをコピーします。

$ mkdir -p /etc/salt/master.d
$ cp /srv/salt/config/etc/salt/master.d/master.conf /etc/salt/master.d
$ cat /etc/salt/master.d/master.conf
pillar_roots:
base:
- /srv/salt/config/pillar

file_roots:
base:
- /srv/salt/config/salt
- /srv/salt/config/formulas/users-formula

masterのノードの/etc/salt/minion.d/grains.confを作成します。

$ mkdir -p /etc/salt/minion.d
$ cat <<EOF > /etc/salt/minion.d/grains.conf
grains:
roles:
- salt-master
EOF

bootstrapを使い、masterとminioをインストールします。

$ curl -L http://bootstrap.saltstack.com | sh -s -- -M
$ service salt-minion start

minion

minion1とminion2にログインしてそれぞれ以下の設定をします。/etc/salt/minion.d/grains.confを編集してroles:devを指定します。

$ mkdir -p /etc/salt/minion.d
$ cat <<EOF > /etc/salt/minion.d/grains.conf
grains:
roles:
- dev
EOF
$ curl -L https://bootstrap.saltstack.com | sh
$ service salt-minion start

salt-key

masterでminionの公開鍵を承認します。

$ salt-key -A
The following keys are going to be accepted:
Unaccepted Keys:
minion1.cs74idcfcloud.internal
minion2.cs74idcfcloud.internal
salt.cs74idcfcloud.internal
Proceed? [n/Y] Y
Key for minion minion1.cs74idcfcloud.internal accepted.
Key for minion minion2.cs74idcfcloud.internal accepted.
Key for minion salt.cs74idcfcloud.internal accepted.

highstate

最後にhighstateを実行します。

$ salt '*' state.highstate