[pipeline:public_api]
削除する必要があるように、次のようにansibleを使用してファイル内の特定のタグから特定の文字列を削除する必要があります。admin_token_auth
[pipeline:public_api]
pipeline = cors sizelimit url_normalize request_id admin_token_auth build_auth_context token_auth json_body ec2_extension public_service
望ましい結果:
[pipeline:public_api]
pipeline = cors sizelimit url_normalize request_id build_auth_context token_auth json_body ec2_extension public_service
答え1
見てモジュールの交換。これは私がAnsibleで一般的に使用する正規表現です。
このモジュールは、ファイル内のパターンのすべてのインスタンスを置き換えます。
それは次のとおりです。
- replace:
path: /etc/keystone/keystone-paste.ini
regexp: '^(pipeline = .*) admin_token_auth(.*)'
replace: '\1\2'
動作する必要があります。
編集する:
これは問題を解決できなかったので、sed
これを使用してscript
モジュールと一緒にansibleに渡しました。
sed
まず、ラベルの行番号を取得してからその行を変更する簡単なスクリプトです。後ろにそのラベル。例:
#!/bin/bash
# Get line number of tag
tagLine=$(sed -n '/pipeline:public_api/=' mohd.txt)
# The line we want to change is below $tagLine
editLine=$((tagLine+1))
# Do the actual replacement on the correct line
sed "${editLine}s/ admin_token_auth//" mohd.txt
概念の証拠:
サンプルファイル(mohd.txt
):
cat mohd.txt
[pipeline:public_bar]
pipeline = cors sizelimit url_normalize request_id admin_token_auth build_auth_context token_auth json_body ec2_extension public_service
[pipeline:public_foo]
pipeline = cors sizelimit url_normalize request_id admin_token_auth build_auth_context token_auth json_body ec2_extension public_service
[pipeline:public_api]
pipeline = cors sizelimit url_normalize request_id admin_token_auth build_auth_context token_auth json_body ec2_extension public_service
[pipeline:public_abc]
pipeline = cors sizelimit url_normalize request_id admin_token_auth build_auth_context token_auth json_body ec2_extension public_service
スクリプトを実行してくださいmohd.txt
。
./pipeline_public_api.sh
[pipeline:public_bar]
pipeline = cors sizelimit url_normalize request_id admin_token_auth build_auth_context token_auth json_body ec2_extension public_service
[pipeline:public_foo]
pipeline = cors sizelimit url_normalize request_id admin_token_auth build_auth_context token_auth json_body ec2_extension public_service
[pipeline:public_api]
pipeline = cors sizelimit url_normalize request_id build_auth_context token_auth json_body ec2_extension public_service
[pipeline:public_abc]
pipeline = cors sizelimit url_normalize request_id admin_token_auth build_auth_context token_auth json_body ec2_extension public_service
ご覧のとおり、行admin_token_auth
から削除されました。次のような [pipeline:public_api]
。
今すぐ使用スクリプトモジュールインベントリのホストでスクリプトを実行します。もちろん、-i
渡されたフラグsed
と変更されるファイルの実際のパスと名前は除外されます。