问题标签 [ansible-playbook]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ansible - 在当前 Ansible 角色的文件部分中查找文件名
我对 Ansible 相当陌生,我正在尝试创建一个将文件复制到远程服务器的角色。每次我运行 playbook 时,本地文件可以有不同的名称,但需要远程复制到相同的名称,如下所示:
Ansible 不允许使用通配符,所以当我编写一个包含主要剧本中任务的简单剧本时,我可以这样做:
但是,当我将任务移动到角色时,第一个操作不再起作用,因为相对路径是相对于角色的,而剧本在“角色”目录的根目录中执行。我可以将路径添加到角色的文件目录,但是有没有更优雅的方法?
ansible - Ansible:根据计数有条件地加载组变量
我有这个 ansible-playbook,但是由于该组,新服务器的名称会附加一个数字计数器。我希望能够将它用于单个服务器实例以及多个服务器实例。有没有办法我可以做类似的事情:
如果计数大于 1,则设置组变量。
谢谢!
ansible - 通过 ansible 收集事实变量中的索引号访问值
我正在使用收集事实变量来获取有关主机的大小信息。对于某些服务器,我得到了变量"ansible_devices": { "sda"
,而对于少数服务器,我得到了"ansible_devices": { "cciss!c0d0"
.
问题:-当我{{ ansible_devices.sda.size }}
在我的剧本中使用变量时,如果sda
在变量中找不到键,ansible_device
那么显然它会给我错误
ansible_device
在变量中获取值,如下所示
或者
我也可以在第一种情况下访问大小,但在第二种情况下{{ ansible_devices.sda.size }}
无法获取值。{{ ansible_devices.cciss!c0d0.size }}
可能是 json 键中的特殊字符,这就是我无法获取其值的原因。
有没有办法通过键索引访问这个变量{{ ansible_devices[0].size }}
?或任何其他更好的方式来访问它。
init - 如何处理 Ansible 中初始化脚本的更改?
我对 Ansible 比较陌生,我创建了一个可以在“裸”服务器上安装 Tomcat 配置的剧本。我想知道如何解决能够更新 init.d 脚本的问题,同时避免在脚本没有更改时在剧本开始时停止服务。这是基本的剧本:
即使没有任何更改,此 playbook 也将始终停止并启动服务。我希望剧本做的只是在有实际变化时停止和启动服务。
我知道我可以使用处理程序(需要进一步研究),但我需要在复制 NEW 脚本之前使用 OLD init.d 脚本停止服务。AFAIK 处理程序在操作发生后响应任务的结果,这意味着新脚本已经复制到旧脚本上,并且可能会阻止服务停止和重新启动。
我该如何处理?
json - 如果键中有特殊字符,则无法从 ansible_devices 变量中获取值
我正在使用收集事实变量从ansible_devices 变量中获取大小。对于某些主机,我得到了变量"ansible_devices": { "sda"
,而对于少数服务器,我得到了"ansible_devices": { "cciss!c0d0"
.
问题:-当我使用ansible
变量时,{{ ansible_devices.sda.size }}
它工作得很好。但是,当我尝试从{{ ansible_devices.cciss!c0d0.size }}
我的剧本中访问值时,它不会返回任何值,而在 jsonansible_devices
变量中存在 {{ ansible_devices.cciss!c0d0.size }}
.
可能是变量 json 键中的特殊字符,ansible
这就是我无法获取其值的原因。
谁能建议我如何{{ ansible_devices.cciss!c0d0.size }}
在这里访问价值?
ansible - 如何从 Ansible 中的新 Python 模块访问主机名
我计划实现一个新的 Ansible 模块,该模块将通过本地连接运行并对主机进行远程 API 调用。有什么方法可以从模块中访问主机/IP 地址的名称吗?我想据此决定使用什么 API。
amazon-ec2 - AWS EC2 实例通过 Ansible IAM 角色创建 instance_profile_name UnauthorizedOperation:错误
我正在尝试使用 IAM 角色通过 ansible 创建 EC2 实例,但是在启动新实例时出现错误
而 iam 角色具有完全的 ec2 访问权限,具有以下策略
请有任何建议。
ansible - ansible:角色结构和变量
我在独立的剧本中使用了一段时间的 ansible,现在想在我的环境中配置角色结构。这是文件夹结构(例如,总结)
它看起来很简单。我想执行 project1-staging.yml 剧本来为特定版本创建一个新的暂存环境,就像这样;ansible-playbook project1-staging.yml -e 'version=1'
和下面的剧本;
这种结构存在一些问题,我也不喜欢它。- 这是正确的方法吗?- 我如何使用 ec2-create 角色的结果,我想将代码部署到刚刚创建但我不知道 id 的服务器。- 是否有另一种将参数传递给角色的方法?
ansible - 如何在 Ansible 中的多个任务之间共享参数
假设我想将一长串参数传递给多个任务 - 有没有一种简单的方法可以定义一次然后在所有任务中共享它们?
deployment - ansible中的一些任务没有执行
我正在使用 ansible 解决一些部署问题。
我想做以下事情:
- 安装虚拟环境
- 激活已安装的虚拟环境
- 检查我是否在虚拟环境中
为此,我有以下剧本:
问题是有时某些任务没有执行,但他们必须......例如在我的情况下任务:
不被执行。
但是,如果我要评论最后两个任务:
上一个有效...
无法理解我做错了什么。有人可以提示我吗?