次のようにstate.sls
で実行されているsaltスクリプトがあります。
salt '*' state.sls foo.bar
私のスクリプトにはこれがあります:
foo-bar:
cmd.run:
- php foo.php bar --delete
- cwd: /srv/foo
--delete
フラグを使用すると、スクリプトは最初にデータベースを切り捨てます。私の問題は、それが質問をし、入力を期待することです。
root@Host:/srv/foo# php foo.php bar --delete
This is going to remove all data in the database. Are you sure? [y/n]:
ソルトは、タイムアウトして中止し、私が意図していなかったことを実行するという答え方を知らないためです。
salt docs on cmd.run
はこれを行うことについて何も言っておらず、正確に何をグーグルで検索すればよいかわかりません。 Perlの実装では、Expectを使用してこれを行うことを知っています。
y
で答えてくださいとsaltに指示するにはどうすればよいですか?
最近のバージョンのsaltでは、cmd.runに「stdin」を指定できます。
A string of standard input can be specified for the command to be run using the ``stdin`` parameter. This can be useful in cases where sensitive information must be read from standard input.: salt '*' cmd.run "grep f" stdin='one\ntwo\nthree\nfour\nfive\n'
それを実行するスクリプトを作成し、cmd.script
を介して実行するか、カスタムpythonモジュールを作成することもできます。