WebアプリケーションをデプロイするAnsibleプレイブック(YAML)があり、デプロイメントプロセスの一環として、さまざまなデータベースと特定のテーブルのデータを作成して初期化します。
脚本タスク:
- name: insert Meter Managers to mdm_connection
shell : "psql -d {{ mdm_config_db }} -c \"insert into mdm_connection (mdm_connection_type_id, name, db_type, host, port, catalog, username, password) values (3, '{{ item.name }}', '{{ item.db_type }}', '{{ item.host }}', {{ item.port }}, '{{ item.catalog }}', '{{ item.username }}', '{{ item.password }}');\""
with_items: "{{ meter_managers }}"
when: item != ""
sudo_user: postgres
tags:
- initDB
host_vars:
meter_managers:
- name: SAMPLE
db_type: ""
host: "http://www.example.com/axis2/services/Example/"
port: -1
catalog: ""
username: csa1
password: "Example$Example"
あなたは上記のパラメータのほとんどを無視することができますが、動作していない一部のように、パスワードフィールドでありますそれは$記号を含んでいます。
例として出てきます。$記号の後に切り捨てられます。
私は二重のようにそれを脱出しようとしてい$$代わりに、このリンクあたりとして:How can I escape a $ dollar sign in a docker compose file?
しかし、右の出力にはなりませんので。
Example15887Example
ここでは、私のプレイブックを実行するたびに番号が異なります。その番号がどこから来ているのか分かりません。それはある種のダニなどのようですが、リンクは$$が単一の$をエスケープする方法であることを示唆しているようです。そのように出てくる理由はわかりません。
私もしてみましたとも」マークとしてみましたかなし "マークを囲むせずに、しかし無駄にしている。
任意のアイデア私が得ることができるように適切にこれをエスケープする方法として、私のデータベーステーブルに挿入するための準備ができて値例$例
UPDATE:?参照質問は、追加の[説明なしで私の質問に答えていないだろう
しかし、Anthonはこの簡略化をコメントに記述し、この質問でははるかに優れた助けとなりました。
あなたは\でエスケープしようとしましたか? – tux
@tuxはい。それも試しました。 – ManoDestra
[可能な正規表現のエスケープドル文字](https://stackoverflow.com/questions/35717778/ansible-regex-escape-dollar-character) – Anthon