오늘 포스팅 할 내용은 ansible에서 text파일을 어떻게 관리하면 좋을까? 입니다.
기본적으로 linux OS에서는 echo 명령어와 sed 명령어 등을 이용해서 text 파일을 수정하고 관리하였는데,
앤서블에서는 이러한 기능들을 모듈로 제공하고 있습니다.
- blockinfile – Insert/update/remove a text block surrounded by marker lines
- lineinfile – Manage lines in text files
- replace – Replace all instances of a particular string in a file using a back-referenced regular expression
간단히 설명하자면,
- blockinfile은 echo랑 비슷하지만 text 내용을 추가하는것입니다.
- "## {mark} ANSIBLE MANAGED BLOCK ##"
- 이와 같은 marker의 형태로 추가될 내용을 surrounded 해줄 marker가 같이 입력됩니다.
- lineinfile은 한줄의 텍스트를 고치고 싶을때 사용하면 됩니다.
- replace는 여러줄의 텍스트를 고치고 싶을때 사용 합니다.. 이때 위 (lineinfile) 모듈과 같은 방식으로 using a back-referenced 정규식을 사용해서 text를 분별합니다.
각각의 예제를 하나씩 사용해보겠습니다.
1. blockinfile
- name: What is blockinfile
blockinfile:
path: /etc/hosts
block: |
172.10.0.115 kpkim.local
172.10.0.166 hspark.local
marker: "## {mark} ANSIBLE MANAGED BLOCK ##"
- path: 수정할 파일의 경로
- block:
- | 아래에 입력하는 내용을 block text를 insert하게 됩니다
- marker: Default로 입력되는 마커를 수정할수 있습니다.
- backup: yes 로 설정하게 되면 수정할 파일의 백업본을 만들어놓고 작업 합니다.
- insertafter: 특정 위치 아래 input을 하고 싶을때 사용합니다.
2. lineinfile
- name: Insert configuration block
lineinfile:
path: "{{ item.path }}"
backup: yes
line: "{{ item.value }}"
loop:
- { path: /etc/hosts, value: "{{ backup__hosts_file }}" }
- { path: /etc/hosts, value: "{{ backup__hosts_file }}" }
loop를 돌려서 여러줄을 추가할수도 있습니다.
- path는 수정하고 싶은 파일의 경로를 적습니다.
- backup: 백업을 합니다.(시간이 뒤에 입력되서 /etc/hosts.12356:17:16 이런식으로 백업을 해놉니다.)
- value : 해당 내용을 입력합니다.
3. Replace
우선 기본적으로 정규식을 이용하여 구분하기 때문에 사용하기 쉽지 않습니다.
한가지만 예제를 통해서 알아보도록 하겠습니다.
- name: Replace between the expressions (requires Ansible >= 2.4)
ansible.builtin.replace:
path: /etc/hosts
regexp: '(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}'
replace: '172.10.10.10'
- path: 당연히,,
- regexp: 이건 대체하고 싶은 text들을 특정할때 사용하는 정규표현식인데, 위 예제는 제가 ipv4 어드레스에 대한 정규표현식을 찾아논것이고, 모든 ipv4형태의 text들을
- replace: 172.10.0.10 으로 대체 하겠다는 내용입니다.
'DevOps > Ansible' 카테고리의 다른 글
[Ansible] 9. ansible Module (systemd, service) (0) | 2021.07.27 |
---|---|
[Ansible] 8. Ansible 구조에 대한 표준 가이드 (0) | 2021.07.26 |
[Ansible] 6. ansible Module (yum repository) (0) | 2021.07.20 |
[Ansible] 5. mariadb 바이너리 설치 (0) | 2021.07.09 |
[Ansible] 4. vRealize Automation 연동 (0) | 2021.07.01 |