[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
와 변경될 파일의 실제 경로 및 이름은 제외됩니다.