我使用 Saltstack 管理工作站的安装。 在我的客户端上安装ipa-client-automount的配方中,我需要:
目前,我有以下状态:
ipa-client-automount:
cmd.run:
{% if salt['cmd.run']('hostname -f | grep domain1') %}
- name: ipa-client-automount --location=linkedtodomain1 -U
{% elif salt['cmd.run']('hostname -f | grep domain2') %}
- name: ipa-client-automount --location=linkedtodomain2 -U
{% endif %}
- unless: python -c "from ipapython import sysrestore; from ipaplatform.paths import paths; statestore = sysrestore.StateFile(paths.IPA_CLIENT_SYSRESTORE); exit(not statestore.has_state('autofs'))"
问题是,在添加if和elif语句时,它不会考虑除非。它直接运行命令而不检查除非条件。 另外,我确信我的除非声明有效,只有一个地方一切都很好。
我如何写这个以获得if和除非同时工作? 感谢
答案 0 :(得分:1)
我认为问题出在if条件下。如果您使用<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.RecyclerView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/list"
android:name="it.ivannotarstefano.cojule.activity.PlayerFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginLeft="16dp"
android:layout_marginRight="16dp"
app:layoutManager="LinearLayoutManager"
tools:context="it.ivannotarstefano.cojule.activity.PlayerFragment"
tools:listitem="@layout/fragment_player" >
</android.support.v7.widget.RecyclerView>
方式,则第一个<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.RecyclerView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/list"
android:name="it.ivannotarstefano.cojule.activity.PlayerFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginLeft="16dp"
android:layout_marginRight="16dp"
app:layoutManager="LinearLayoutManager"
tools:context="it.ivannotarstefano.cojule.activity.PlayerFragment"
tools:listitem="@layout/fragment_player" >
<android.support.design.widget.FloatingActionButton
android:id="@+id/floatingActionButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom|end"
android:layout_margin="10dp"
android:clickable="true"
android:focusable="true"
android:src="@drawable/ic_add_black_24dp"
app:backgroundTint="#fff700" />
</android.support.v7.widget.RecyclerView>
将始终为真。
在盐中,更好的方法是使用if salt['cmd.run']()
谷物,例如:
if
或者,如果您真的想使用host
方法,请尝试以下方法:
{% if grains.get('host') == 'domain1' %}
答案 1 :(得分:0)
我有一个有效的解决方案:
ipa-client-automount:
cmd.run:
- names:
{% if salt['cmd.run']('hostname -f | grep domain1') %}
- ipa-client-automount --location=linkedtodomain1 -U
{% elif salt['cmd.run']('hostname -f | grep domain2') %}
- ipa-client-automount --location=linkedtodomain2 -U
{% endif %}
- unless: condition
这不是最干净的解决方案,但它对我有用。不知道为什么这对names
不起作用,但在name
上起作用。