当我使用以下命令运行我的剧本时,我遇到了通过额外变量提供值的问题:
ansible-playbook gitolite-docker.yml -e "GITOLITE_SSH_KEY=$(cat roles/gitolite-docker/files/john_rsa.pub)" --ask-vault-pass
Run Code Online (Sandbox Code Playgroud)
这是摘录 gitolite-docker.yml
- name: logging admin.pub
shell: echo "{{GITOLITE_SSH_KEY}}" > /home/ansusersu/gitoliteadmin.pub
- name: create gitolite--docker container
docker_container:
name: gitolite
image: alex2357/docker-gitolite
state: started
ports:
- "8081:22"
volumes:
- "/docker/volumes/gitoliterepositories:/home/git/repositories"
env:
SSH_KEY: "{{GITOLITE_SSH_KEY}}"
KEEP_USERS_KEYS: "dummytext"
become: yes
Run Code Online (Sandbox Code Playgroud)
问题是我只从SSH密钥中获得前几个字符"ssh-rsa".
john@john-VirtualBox:~$ sudo cat /home/ansusersu/gitoliteadmin.pub
ssh-rsa
john@john-VirtualBox:~$
Run Code Online (Sandbox Code Playgroud)
我在两种用法中得到完全相同的值{{GITOLITE_SSH_KEY}}.在Docker容器中,我在日志文件中具有完全相同的值.
对于Docker类似的线路工作正常:
docker run -d -p 8081:22 --name gitolite -e SSH_KEY="$(cat ~/.ssh/id_rsa.pub)" -v /docker/volumes/gitoliterepositories:/home/git/repositories alex2357/docker-gitolite
Run Code Online (Sandbox Code Playgroud)
当我看到这在我看来,我将无法实现与Ansible,剧本相同的行为与码头工人,因为它认为,其余人员作为另一个额外的变种.有没有办法使它工作?
我正在学习F#,不知道这种初始化数组的前N个元素的方法实现是否可以改进。目前,它工作得很好。我的意思是,如果它尝试通过执行对工厂的第二次调用来初始化第二个元素时失败,那么它将为第一个成功的结果调用undo。唯一的小问题是如果出错,它不会清除数组中的项目,但我不必担心。我担心的是,如果它在第2或第3或更高版本上失败,则应该撤消第一个成功的结果。如果成功,则成功结果应在“撤消”列表中包含所有要撤消的函子。
问题是我想避免递归,并使用类似Linq的东西进行迭代和执行操作,但是在这种情况下,如何使用bang(let!)尚不清楚
// val private initializeArrayInternal:
// arr : 'a option [] ->
// factory: unit -> RopWithUndo.Result<'a> ->
// count : int ->
// index : int
// -> RopWithUndo.Result<'a option []>
let rec private initializeArrayInternal (arr: _ []) factory count index =
if (arr.GetLength(0) < count) then
rwu.Failure "Count can not be greater than array length"
else if (count = index ) then
rwu.successNoUndo arr
else
rwu.either {
let! element = factory()
arr.[index] <- Some element
return (initializeArrayInternal …Run Code Online (Sandbox Code Playgroud) 我想知道是否有一个便宜的(性能明智的)选项来搜索从索引开始满足某些条件的数组元素的索引?
Array.tryFindIndex方法没有参数startIndex。我可以做Array.skip(n)然后在那里搜索,但是创建一个仅用于搜索的数组似乎很昂贵。我该怎么做呢?
我看了一下List也没有那个说法。我需要在...期间使用吗?有更好的方法吗?
例如,我有下一个更少的代码
form.someForm
{
.form-group
{
> div
{
@media @wideMobile
{
width: calc(~"100%-144px");
}
}
> label
{
@media @wideMobile
{
width: 138px;
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
我想写点类似的东西
form.someForm
{
.setWidths(138px,144px);
}
Run Code Online (Sandbox Code Playgroud)
得到相同的结果.我怎样才能做到这一点?
在我看来,大多数现有的 Ansible 模块都需要 vCenter。例如guest_module具有必需的参数 vcenter_hostname。问题是 - 是否能够使用 Ansible 管理 2-3 个 vSphere 主机?我需要创建虚拟环境(虚拟网络、来宾虚拟机、负载平衡端点)。
我也考虑过 Hyper-v,但它没有 Ansible 模块。直接 powershell 管理被认为是 Hyper-v 的最后手段。