如何正确连接步骤与木偶螺栓计划(yaml 格式)
How to properly connect steps with a puppet bolt plan (yaml format)
我正在创建一个 puppet bolt 计划以在 4 台主机上安装 docker,在第一台主机上启用 swarm,然后将其他 3 台主机添加到该 swarm。
我的问题是我不知道如何将 yaml 的这一部分保存到变量中。
steps:
- command: docker swarm init
targets: $firstmanagementnode
我需要它,因为输出包含一个密钥,允许其他主机稍后在计划中加入集群
下面的 Puppet 文档中有一个示例,但老实说,我可以弄清它的正反面
steps:
- name: hostnames
command: hostname -f
targets: $targets
- task: echo
parameters:
message: $hostnames.map |$hostname_result| { $hostname_result['stdout'] }.join(',')
我能够使用以下 yaml 和任务解决我的问题:
YAML:
- name: initswarm
command: docker swarm init
targets: $firstmanagementnode
- name: managertoken
command: docker swarm join-token manager
targets: $firstmanagementnode
- name: managersjoin
task: docker_swarm::joinswarm
targets: $managernodes
parameters:
masternode: $managertoken.map |$token_result| { $token_result['stdout'] }.join(',')
description: configure additional manager nodes
任务:
#!/bin/bash
$(echo $PT_masternode | grep -o 'docker.*2377')
任务json:
{
"description": "joins a docker swarm",
"input_method": "both",
"parameters": {
"masternode": {
"description": "The first master node",
"type": "String"
}
}
}
你有没有试过在 forge https://forge.puppet.com/puppetlabs/docker.
上查看 Docker 模块
您尝试做的许多工作已经作为独立任务完成,您可能只需要将其纳入计划即可。
看看这里的任务 https://github.com/puppetlabs/puppetlabs-docker/tree/main/tasks .rb 文件是代码,.json 实际上是手册页,如果你把这个模块拉到你的 Bolt 服务器上,你将能够 运行 bolt task show docker::swarm_join
获取更多信息。
这里的任务初始化 swarm,还有另一个名为 swarm_token 的任务,它将 return 你的令牌用于计划并传递给 swarm_join。
没有安装 docker 的任务,但您在计划中需要做的就是在计划开始时添加 include docker
。
我正在创建一个 puppet bolt 计划以在 4 台主机上安装 docker,在第一台主机上启用 swarm,然后将其他 3 台主机添加到该 swarm。
我的问题是我不知道如何将 yaml 的这一部分保存到变量中。
steps:
- command: docker swarm init
targets: $firstmanagementnode
我需要它,因为输出包含一个密钥,允许其他主机稍后在计划中加入集群
下面的 Puppet 文档中有一个示例,但老实说,我可以弄清它的正反面
steps:
- name: hostnames
command: hostname -f
targets: $targets
- task: echo
parameters:
message: $hostnames.map |$hostname_result| { $hostname_result['stdout'] }.join(',')
我能够使用以下 yaml 和任务解决我的问题:
YAML:
- name: initswarm
command: docker swarm init
targets: $firstmanagementnode
- name: managertoken
command: docker swarm join-token manager
targets: $firstmanagementnode
- name: managersjoin
task: docker_swarm::joinswarm
targets: $managernodes
parameters:
masternode: $managertoken.map |$token_result| { $token_result['stdout'] }.join(',')
description: configure additional manager nodes
任务:
#!/bin/bash
$(echo $PT_masternode | grep -o 'docker.*2377')
任务json:
{
"description": "joins a docker swarm",
"input_method": "both",
"parameters": {
"masternode": {
"description": "The first master node",
"type": "String"
}
}
}
你有没有试过在 forge https://forge.puppet.com/puppetlabs/docker.
上查看 Docker 模块您尝试做的许多工作已经作为独立任务完成,您可能只需要将其纳入计划即可。
看看这里的任务 https://github.com/puppetlabs/puppetlabs-docker/tree/main/tasks .rb 文件是代码,.json 实际上是手册页,如果你把这个模块拉到你的 Bolt 服务器上,你将能够 运行 bolt task show docker::swarm_join
获取更多信息。
这里的任务初始化 swarm,还有另一个名为 swarm_token 的任务,它将 return 你的令牌用于计划并传递给 swarm_join。
没有安装 docker 的任务,但您在计划中需要做的就是在计划开始时添加 include docker
。