ansible を使用して、ファイル内の特定のタグから特定の文字列を削除します。

ansible を使用して、ファイル内の特定のタグから特定の文字列を削除します。

[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と変更されるファイルの実際のパスと名前は除外されます。

関連情報