PowerShell DSC で使う¶
Windows PowerShell DSC (Desired State Configuration) は設定管理ツールです。これは Windows PowerShell の機能を拡張します。DSC は宣言型の構文を使いターゲットがどのような状態になるかを設定します。PowerShell DSC に関する詳しい情報は、 Microsoft 社のサイト をご覧ください。
動作条件¶
このガイドの利用にあたっては、Windows ホストが PowerShell v4.0 以上の必要があります。
DSC 設定に含まれるスクリプトは、公式では Ubuntu ターゲットのみサポートされています。 Ubuntu ターゲットは OMI サーバと PowerShell DSC for Linux providers のインストールが必要です。詳しい情報は https://github.com/MSFTOSSMgmt/WPSDSCLinux をご覧ください。ソース・リポジトリの一覧に、PowerShell DSC for Linux のインストール方法や、初期化スクリプトに関するより詳しい情報があります。
インストール¶
DSC 設定例のソースは次のリポジトリ https://github.com/anweiss/DockerClientDSC で利用可能です。クローンも可能です。
$ git clone https://github.com/anweiss/DockerClientDSC.git
使い方¶
DSC 設定はシェルスクリプトのセットを使い、どこに Docker の構成物を置くかや、ターゲット・ノードの設定を行います。ソース・リポジトリはスクリプト( RunDockerClientConfig.ps1
があり)、CIM セッションに必要な接続と、 Set-DscConfiguration
cmdlet の実行に使います。
より詳細な情報は次の URL をご覧ください。https://github.com/anweiss/DockerClientDSC
Docker インストール¶
apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys\
36A1D7869245C8950F966E92D8576A8BA88D21E9
sh -c "echo deb https://apt.dockerproject.org/repo ubuntu-trusty main\
> /etc/apt/sources.list.d/docker.list"
apt-get update
apt-get install docker-engine
現在の作業ディレクトリが DockerClientDSC
ソースに設定されていることを確認し、Docker クライアント設定を現在の PowerShell セッションに反映します。
. .\DockerClient.ps1
ターゲット・ノード用の DSC 設定に必要な .mof ファイルを生成します。
DockerClient -Hostname "myhost"
サンプルの DSC 設定データ・ファイルは、 Hostname
パラメータの情報を元に連結されます。
DockerClient -ConfigurationData .\DockerConfigData.psd1
ターゲット・ノードでアプリケーション設定プロセスを開始します。
.\RunDockerClientConfig.ps1 -Hostname "myhost"
RunDockerClientConfig.ps1
スクリプトは DSC 設定データファイルもパースして、次のように複数のノードに対して設定を反映します。
.\RunDockerClientConfig.ps1 -ConfigurationData .\DockerConfigData.psd1
イメージ¶
次のようにイメージ設定を行います: docker pull [image]
あるいは docker rmi -f [IMAGE]
です。
先ほどのステップで定義したファイルを使い、 DockerClient
の Image
パラメータで設定を追加します。
DockerClient -Hostname "myhost" -Image "node"
.\RunDockerClientConfig.ps1 -Hostname "myhost"
ホストに対して複数のイメージを取得する設定も可能です。
DockerClient -Hostname "myhost" -Image "node","mongo"
.\RunDockerClientConfig.ps1 -Hostname "myhost"
イメージを削除するには、次のようにハッシュ・テーブルを使います。
DockerClient -Hostname "myhost" -Image @{Name="node"; Remove=$true}
.\RunDockerClientConfig.ps1 -Hostname $hostname
コンテナ¶
コンテナの設定は次のように行います。
docker run -d --name="[containername]" -p '[port]' -e '[env]' --link '[link]'\
'[image]' '[command]'
あるいは
docker rm -f [containername]
コンテナを作成・削除するには、1つまたは複数のバッシュ・テーブルを Container
に使います。ハッシュ・テーブルは次のプロパティのパラメータを指定します。
- Name(必須)
- Image(Remove プロパティが
$true
の以外は必要) - Port
- Env
- Link
- Command
- Remove
例えば、ハッシュテーブルの設定でコンテナを作成するには、次のようにします。
$webContainer = @{Name="web"; Image="anweiss/docker-platynem"; Port="80:80"}
それから、先補との定義と同じ手順で DockerClient
に -Image
と -Container
パラメータを使います。
DockerClient -Hostname "myhost" -Image node -Container $webContainer
.\RunDockerClientConfig.ps1 -Hostname "myhost"
既存のコンテナは次のように削除できます。
$containerToRemove = @{Name="web"; Remove=$true}
DockerClient -Hostname "myhost" -Container $containerToRemove
.\RunDockerClientConfig.ps1 -Hostname "myhost"
このハッシュテーブルは全てのパラメータを使い、コンテナを作成しています。
$containerProps = @{Name="web"; Image="node:latest"; Port="80:80"; `
Env="PORT=80"; Link="db:db"; Command="grunt"}
参考
- Using PowerShell DSC
- https://docs.docker.com/engine/admin/dsc/