IDCFクラウドのCLIでSaltをプロビジョニングする でsalt-masterとsalt-minionをインストールした環境をしばらく放置していました。Kubernetesの構築ではSaltが重要な位置を占めているのでSaltの復習をしたいと思います。 ちょうど開発用のWordPressのコンテナを用意する必要があったので、Docker States
を作成してminionにインストールします。
salt-minionのインスタンス作成 salt-minion用のインスタンスを作成してからインストールコマンドを実行します。 名前はminion-wp
としました。
$ salt-install minion-wp minion ... salt-minion start/running, process 3179 Setting up debconf-utils (1.5.42ubuntu1) ... * INFO: Running install_ubuntu_check_services() * INFO: Running install_ubuntu_restart_daemons() * INFO: Salt installed!
salt-minion公開鍵をsalt-masterに登録 salt-masterのホストで、salt-minionの未承認の公開鍵を一覧します。
$ sudo salt-key -L Accepted Keys: minion1.cs29dcloud.internal minion2.cs29dcloud.internal salt.cs29dcloud.internal Unaccepted Keys: minion-wp.cs29dcloud.internal Rejected Keys:
作成したminion-wpの公開鍵を承認します。
$ sudo salt-key -a minion-wp.cs29dcloud.internal The following keys are going to be accepted: Unaccepted Keys: minion-wp.cs29dcloud.internal Proceed? [n/Y] Y Key for minion minion-wp.cs29dcloud.internal accepted.
再度一覧すると、すべてAccepted Keys
に追加されています。
$ sudo salt-key -L Accepted Keys: minion-wp.cs29dcloud.internal minion1.cs29dcloud.internal minion2.cs29dcloud.internal salt.cs29dcloud.internal Unaccepted Keys: Rejected Keys:
docker/init.sls Automating application deployments across clouds with Salt and Docker を参考にして、Salt States
を作成します。docker-formula もありますが、salt.states.dockerio を実行するためのdocker-py がインストールされないので、自分で定義することにします。
/srv/salt/docker/init.sls docker-python-pip: pkg.installed: - name: python-pip docker-python-dockerpy: pip.installed: - name: docker-py - repo: git+https://github.com/dotcloud/docker-py.git - require: - pkg: pkg-core - pkg: docker-python-pip docker-dependencies: pkg.installed: - pkgs: - iptables - ca-certificates - lxc docker-repo: pkgrepo.managed: - humanname: Docker Repo - name: deb https://get.docker.io/ubuntu docker main - key_url: https://get.docker.io/gpg - require: - pkg: pkg-core lxc-docker: pkg.latest: - require: - pkg: docker-dependencies docker: service.running
base.sls 共通のbase.slsは、Kubernetes を参考にします。
localeはja_JP.UTF-8
を指定します。
/srv/salt/base.sls pkg-core: pkg.installed: - names: - apt-transport-https - python-apt - git - language-pack-ja ja_JP.UTF-8: locale.system
top.sls top.slsにはbase環境を1つだけ定義します。
/srv/salt/top.sls base: '*' : - base - docker
state.highstate salt-masterからstate.highstate
を実行して、minion-wpにDockerをインストールします。
$ sudo salt 'minion-wp*' state.highstate ... Summary ------------ Succeeded: 9 Failed: 0 ------------ Total: 9