首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

PowerShell DSC用法(引擎) | PowerShell DSC usage (Engine)

Windows PowerShell所需的状态配置%28DSC%29是一种配置管理工具,它扩展了WindowsPowerShell的现有功能。DSC使用声明式语法来定义应该配置目标的状态。有关PowerShell DSC的更多信息,请访问http://tech net.microsoft.com/en-us/Library/dn249912.aspx...

所需

要使用本指南,您将需要一个带有PowerShell V4.0或更高版本的Windows主机。

包含的DSC配置脚本也使用官方的PPA,因此只支持Ubuntu目标。Ubuntu目标必须已经安装了Linux提供程序所需的OMIServer和PowerShell DSC。更多信息可在https://github.com/MSFTOSSMgmt/WPSDSCLinux下面列出的源存储库还包括用于Linux安装的PowerShell DSC和init脚本以及更详细的安装信息。

安装

DSC配置示例源可在以下存储库中获得:https://github.com/anweiss/DockerClientDSC.它可以通过以下方式克隆:

代码语言:javascript
复制
$ git clone https://github.com/anweiss/DockerClientDSC.git

使用

DSC配置使用一组shell脚本来确定指定的Docker组件是否配置在目标节点%28s%29上。源存储库还包括一个脚本%28RunDockerClientConfig.ps1%29,可用于建立所需的CIM会话%28s%29并执行Set-DscConfigurationcmdlet

更详细的使用信息可在https://github.com/anweiss/DockerClientDSC...

安装码头

Docker安装配置相当于运行:

代码语言:javascript
复制
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源并将DockerClient配置加载到当前PowerShell会话中

代码语言:javascript
复制
. .\DockerClient.ps1

生成所需的DSC配置。目标节点的MOF文件

代码语言:javascript
复制
DockerClient -Hostname "myhost"

还包括了一个示例dsc配置数据文件,可以与Hostname参数:

代码语言:javascript
复制
DockerClient -ConfigurationData .\DockerConfigData.psd1

在目标节点上启动配置应用程序进程

代码语言:javascript
复制
.\RunDockerClientConfig.ps1 -Hostname "myhost"

RunDockerClientConfig.ps1Script还可以解析DSC配置数据文件并针对多个节点执行配置:

代码语言:javascript
复制
.\RunDockerClientConfig.ps1 -ConfigurationData .\DockerConfigData.psd1

图像

图像配置相当于运行:docker pull [image]docker rmi -f [IMAGE]...

使用上面定义的相同步骤,执行DockerClient带着Image参数并应用配置:

代码语言:javascript
复制
DockerClient -Hostname "myhost" -Image "node"
.\RunDockerClientConfig.ps1 -Hostname "myhost"

还可以配置主机以获取多个映像:

代码语言:javascript
复制
DockerClient -Hostname "myhost" -Image "node","mongo"
.\RunDockerClientConfig.ps1 -Hostname "myhost"

若要删除图像,请按以下方式使用哈希表:

代码语言:javascript
复制
DockerClient -Hostname "myhost" -Image @{Name="node"; Remove=$true}
.\RunDockerClientConfig.ps1 -Hostname $hostname

集装箱

容器配置等同于运行:

代码语言:javascript
复制
docker run -d --name="[containername]" -p '[port]' -e '[env]' --link '[link]'\
'[image]' '[command]'

代码语言:javascript
复制
docker rm -f [containername]

若要创建或删除容器,可以使用Container带有一个或多个哈希表的参数。传递给此参数的哈希表%28s%29可以具有以下属性:

  • 姓名%28规定%29
  • 图像%28必需,除非将Remove属性设置为$true%29
  • 环境变化
  • 链接
  • 命令
  • 移除

例如,使用容器的设置创建一个哈希表:

代码语言:javascript
复制
$webContainer = @{Name="web"; Image="anweiss/docker-platynem"; Port="80:80"}

然后,使用上面定义的相同步骤,执行DockerClient带着-Image-Container参数:

代码语言:javascript
复制
DockerClient -Hostname "myhost" -Image node -Container $webContainer
.\RunDockerClientConfig.ps1 -Hostname "myhost"

现有集装箱也可按以下方式移除:

代码语言:javascript
复制
$containerToRemove = @{Name="web"; Remove=$true}
DockerClient -Hostname "myhost" -Container $containerToRemove
.\RunDockerClientConfig.ps1 -Hostname "myhost"

下面是一个哈希表,它包含所有可用于创建容器的属性:

代码语言:javascript
复制
$containerProps = @{Name="web"; Image="node:latest"; Port="80:80"; `
Env="PORT=80"; Link="db:db"; Command="grunt"}

扫码关注腾讯云开发者

领取腾讯云代金券