Dê uma olhada no substitua o módulo . É o que eu normalmente uso para expressões regulares em ansible:
This module will replace all instances of a pattern within a file.
Algo como:
- replace:
path: /etc/keystone/keystone-paste.ini
regexp: '^(pipeline = .*) admin_token_auth(.*)'
replace: ''
Deve funcionar.
EDITAR:
Como isso não funcionou, eu usaria sed
para isso e passaria para ansible com o módulo script
.
Primeiro, um simples script sed
que recebe o número da linha da sua tag e, em seguida, faz a alteração na linha após essa tag. Exemplo:
#!/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
PoC:
Exemplo de arquivo ( 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
Executando o script em 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
Como você pode ver, admin_token_auth
foi removido da linha abaixo [pipeline:public_api]
.
Agora, use o módulo de script para executar esse script nos hosts do seu inventário. EXCETO, é claro, com o -i
flag passado para sed
e o caminho e nome reais para o arquivo que você deseja alterar.