파일의 특정 줄을 ansible로 교체하세요.

파일의 특정 줄을 ansible로 교체하세요.

ansible의 교체 모듈을 사용하여 파일의 문자열을 바꾸는 방법을 알고 있습니다. 내가 찾고 있는 것은 특정 라인을 교체하는 것입니다.

여러 위치에 동일한 문자열이 있는 파일이 있는데 그 인스턴스 하나만 바꾸고 싶습니다.

X 인스턴스만 교체하거나 교체할 특정 줄을 제공하는 방법이 있습니까?

답변1

X 인스턴스만 교체하거나 교체할 특정 줄을 제공하는 방법이 있습니까?

저라면 특정 라인을 변경하기 위해 shell모듈과 표준 호출을 사용할 것입니다. sed아래 예에서는 sed네 번째 행만 변경했습니다.

---
- hosts: all 
  tasks:
    - name: "Run sed via ansible"
      shell: sed -i '4s/bike/car/' /home/maulinglawns/slask/sed_example

Ansible 플레이북 이전 파일의 예:

cat sed_example 
bike plane
bike plane
bike plane
bike plane
bike plane
bike plane
bike plane
bike plane
bike plane
bike plane

스크립트를 실행합니다:

ansible-playbook sed_with_ansible.yml -i "localhost," -k
SSH password: 

PLAY [all] *********************************************************************

TASK [setup] *******************************************************************
ok: [localhost]

TASK [Run sed via ansible] *****************************************************
changed: [localhost]
 [WARNING]: Consider using template or lineinfile module rather than running
sed


PLAY RECAP *********************************************************************
localhost                  : ok=2    changed=1    unreachable=0    failed=0  

스크립트 이후의 파일:

cat sed_example 
bike plane
bike plane
bike plane
car plane
bike plane
bike plane
bike plane
bike plane
bike plane
bike plane

가능한이 모듈을 사용하여 이를 달성하는 것이 가능 lineinfile하지만 그러한 스위치에 대해 알지 못하며 문서에서도 찾을 수 없습니다.

관련 정보