我有一个看起来像这样的剧本:
<section class="slideshow">
<img src="img/img1.png" class="bgM show"/>
<img src="img/img2.png" class="bgM"/>
<img src="img/img3.jpg" class="bgM"/>
</section>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
<script type="text/javascript">
function switch_images() {
var $active = $('.slideshow IMG.show');
var $next = $active.next();
if(!$next.length){
$next = $('.slideshow IMG:first');
}
$active.removeClass('show');
$next.addClass('show');
}
$(function() {
setInterval( "switch_images()", 8000 );
});
</script>
基本上,我有一组服务器以相同的方式安装,除了我指定为主服务器的服务器需要不同的参数集。以上工作原理很好,因为我可以选择我的组中的第一台服务器并设置参数,然后使用以下块跟随它以使用备用设置安装其余主机:
- name: Install myApp
hosts: tag_app_prod[0]
sudo: yes
roles:
- { role: myApp, master: "true" }
问题是我正在使用动态库存,而且我不知道在运行时会有多少主机存在。有没有办法在我的主机行上指定上限而不是像上面那样将它设置为25这样的特定数字?
答案 0 :(得分:1)
如果使用高于实际服务器列表范围的索引,Ansible实际上会好的,所以这应该有效:
- name: Install myApp
hosts: tag_app_prod[0]
sudo: yes
roles:
- { role: myApp, master: "true" }
- name: Install myApp
hosts: tag_app_prod[1-9999]
sudo: yes
roles:
- { role: myApp, master: "false" }
然而,还有另一种方法可以做到这一点。您可以使用jinja动态设置master
变量:
- name: Install myApp
hosts: tag_app_prod
sudo: yes
roles:
- { role: myApp, master: "{% if inventory_hostname == groups['tag_app_prod'][0] %}True{% else %}False{% endif %}" }
当为tag_app_prod
组(groups['tag_app_prod'][0]
)中的第一个主机调用该角色时,变量master
将设置为True。对于所有其他主机,它将被设置为False。