我不熟悉...
我想确保mongo在标记为tag_role_mongo且节点在tag_role_node上运行的所有主机上运行
是否可以覆盖主机变量
hosts: {{ item.tag_name }}
tasks:
command: // check ps output {{ item.process_name }}
with_items:
- tag_name: tag_role_mongo
process_name: "mongo"
- tag_name: tag_role_node
process_name: "node"
我很确定,我的语法不正确,我的问题是甚至可以使用剧本来做这样的事情。 在所有的playbook示例中,主机是固定的,或者可以使用extra-args选项从命令行覆盖。
任何例子都会非常有用
答案 0 :(得分:1)
我不完全确定我是否正确理解了您的问题,但标签不是在主机级别添加,而是在任务级别添加 - 请参阅documentation。您可能意味着对两个不同的组(mongo和节点)执行相同的命令。 为此,您可以将您的剧本分为两部分:
<%@ Page Title="" Language="vb" AutoEventWireup="false" MasterPageFile="~/Main.master" CodeBehind="PayPeriodSub.aspx.vb" Inherits="TTS.PayPeriodSub" %>
<asp:Content ID="Content1" ContentPlaceHolderID="MainContent" runat="server">
<dx:ASPxComboBox ID="BoxPayPeriods" runat="server" DataSourceID="SqlPayPeriods" EnableClientSideAPI="True" TextField="PayRange" ValueField="PayPeriodKey">
<ClientSideEvents
SelectedIndexChanged="function(s, e) { TimesheetGrid.PerformCallback(s.GetValue()); }">
</ClientSideEvents>
</dx:ASPxComboBox>
<dx:ASPxGridView ID="TimesheetGrid" runat="server" AutoGenerateColumns="False" DataSourceID="SqlTimesheet" KeyFieldName="RecordID">
<Columns>
<dx:GridViewDataTextColumn FieldName="RecordID" ReadOnly="True" VisibleIndex="0">
<EditFormSettings Visible="False" />
</dx:GridViewDataTextColumn>
<dx:GridViewDataTextColumn FieldName="ShipCountry" VisibleIndex="1">
</dx:GridViewDataTextColumn>
<dx:GridViewDataTextColumn FieldName="PayPeriodID" VisibleIndex="2">
</dx:GridViewDataTextColumn>
</Columns>
</dx:ASPxGridView>
<br />
<asp:SqlDataSource ID="SqlTimesheet" runat="server" ConnectionString="<%$ ConnectionStrings:prd_ttsConnectionString %>" SelectCommand="SELECT RecordID, ShipCountry, PayPeriodID FROM TIMESHEET WHERE (PayPeriodID = @Param1)">
<SelectParameters>
<asp:SessionParameter DefaultValue="6" Name="Param1" SessionField="PayPeriod" />
</SelectParameters>
</asp:SqlDataSource>
<br />
<asp:SqlDataSource ID="SqlPayPeriods" runat="server" ConnectionString="<%$ ConnectionStrings:prd_ttsConnectionString %>" SelectCommand="SELECT * FROM [vw_PayPeriods]"></asp:SqlDataSource>
</asp:Content>
不是很好,但应该解决问题。您还可以创建一个角色,并将您要检查的进程名称传递给此角色,以便更轻松地进行维护。