본문 바로가기

클라우드/앤서블(Ansible)

앤서블 Ansible 파일 모듈 / 네트워크 도구 모듈 / 패키지 모듈 / 시스템 모듈

# 파일 모듈

 

copy 모듈은 local(컨트롤노드)이나 remote(관리노드)머신에서 remote(관리노드) 머신으로 파일을 복사한다

dest 파일을 복사 할 목적지

src (source) 복사할 파일 local path

mode 퍼미션 지정

 

 

복사 된 것을 확인

 

 

remote_src = true  src가 원격이다

hi.sh가 local에 있는것이 아니라 원격에 있다. 원격에 있는 hi.sh를 복사한다

 

확인

 

한번 더 실행하면 복사되지 않는다

checksum 파일을 해시를 떠서 비교하여 변경되었는 되지 않았는지 확인한다

 

 

hello.sh 파일의 내용을 변경하면 파일이 복사가 된다

 

확인 (시간이 변경 되었다)

 

 

backup 이미 파일이 존재하는 경우 파일을 복사하게 되면 덮어쓴다. backup=true 이전 파일을 백업시킨다

오리지널 파일에 시간을 붙여서 파일을 복사한다

 

 

fetch모듈은 remote(관리노드)머신에서 local(컨트롤노드)머신으로 파일을 가져온다

 

 

확인

 

 

여러시스템에서 파일을 가져올 수 있기 때문에 인벤토리에 있는 호스트 이름의 디렉토리가 만들어지고 그 밑에 파일이 복사된다

 

 

file 모듈

symbolic link, 디렉토와 같은 파일의 속성을 다룬다

hi.sh가 파일입니까?

 

 

hi.sh가 디렉토리입니까? 아니기때문에 FAILED가출력된다 

 

 

abc라는 파일이 있는가? absent 없다

 

 

touch 파일 생성

 

 

abc가 파일입니까? SUCCESS

 

 

xyz라는 디렉토리가 없으면 만들어진다

 

확인

 

 

파일이나 디렉토리를 삭제 할 수 있다

 

 

권한을 변경 할 수 있다

 

 

파일에서 특정 패턴을 찾아서 교체 할 수 있다

ldh라는 글자를 Dahye로 변경하겠다

regexp 정규화표현식
replace는 단어 교체 (단어)

 

 

lineinfile은 문자열 전체를 교체 (행)

Dahye단어가 있는 문자열을 찾아 전체를 ldh cloud로 교체

 

 

 

# 네트워크 도구 모듈

get_url 모듈 (wget과 비슷) 파일을 받을 때 사용한다

url = 파일을 받을 url

 

 

파일 확인

 

 

unarchive 모듈

archive를 푼다

 

 

확인

 

uri 사이트가 정상적으로 존재하는지확인

 

 

 

# 패키지 모듈

latest 최신버전을 설치

update_cache = apt 업데이트

yum은 yum명령어를 내릴때마다 자동으로 최신 패키지 목록 인덱스 정보를 가져온다

우분투는 인덱스가 없으면 패키지를 설치할 수 없어서 항상 apt update를 해주어야한다

vm을 처음 배포했을 때 우분투,데비안 계열은 인덱스를 가져오는것을 한번도 실행 한 적이 없기 때문에 apt update를 해주어야 한다.

 

 

absent 삭제

 

 

package 모듈

패키지를 설치, 업그레이드, 제거한다 

apt모듈은 데비안 계열에서만 사용, yum 모듈은 레드햇 계열에서만 사용

패키지 모듈은 os패키지 관리자를 알아서 확인해서 패키지를 설치한다

 

 

 

 

# 시스템 모듈

service 모듈
유닉스의 모든 서비스를 하나의 모듈로 관리 할 수 있다

 

더보기

  239  ansible -m apt 'name=apache2 state=present' -b 192.168.200.101
  240  ansible -m apt -a 'name=apache2 state=present' -b 192.168.200.101
  241  ansible -m apt -a 'name=apache2 state=absent' -b 192.168.200.101
  242  ansible -m apt -a 'name=apache2 state=present' -b 192.168.200.101
  243  ansible -m command -a 'apt install apache2 -y' -b 192.168.200.101
  244  ansible -m apt -a 'name=apache2 state=absent' -b 192.168.200.101
  245  ansible -m command -a 'apt install apache2 -y' -b 192.168.200.101
  246  ansible -m command -a ls mgmt
  247  clear
  248  ansible -m copy -a 'src=hello.sh dest=/home/devops/hi.sh mode=550' 192.168.200.101
  249  ansible -m command -a 'ls -l /home/devops/' 192.168.200.101
  250  ansible -m copy -a 'src=hi.sh remote_src=true dest=/home/devops/hi2.sh mode=777' 192.168.200.101
  251  ansible -m command -a 'ls -l /home/devops/' 192.168.200.101
  252  ansible -m copy 'src=hi.sh remote_src=true dest=/home/devops/hi2.sh mode=777' 192.168.200.101
  253  ansible -m copy -a 'src=hi.sh remote_src=true dest=/home/devops/hi2.sh mode=777' 192.168.200.101
  254  ansible -m copy -a 'src=hello.sh dest=/home/devops/hi.sh mode=550' 192.168.200.101
  255* 
  256  cat hello.sh 
  257  ansible -m copy -a 'src=hello.sh dest=/home/devops/hi.sh mode=550' 192.168.200.101
  258  ansible -m command -a 'ls -l /home/devops/' 192.168.200.101
  259  ansible -m copy -a 'src=hello.sh dest=/home/devops/hi.sh mode=550 backup=true' 192.168.200.101
  260  ansible -m command -a 'ls -l /home/devops/' 192.168.200.101
  261  vi hello.sh 
  262  cat hello.sh 
  263  ansible -m copy -a 'src=hello.sh dest=/home/devops/hi.sh mode=550 backup=true' 192.168.200.101
  264  ansible -m command -a 'ls -l /home/devops/' 192.168.200.101
  265  ansible -m fetch -a 'src=/home/devops/hi.sh dest=/home/devops'  192.168.200.101
  266  ls
  267  rm 192.168.200.101/
  268  rm -f 192.168.200.101/
  269  rm -rf 192.168.200.101/
  270  ansible -m fetch -a 'src=/home/devops/hi.sh dest=/home/devops'  192.168.200.101
  271  ls
  272  ls -R 192.168.200.101/
  273  ansible -m fetch -a 'src=/home/devops/hi.sh dest=/home/devops'  192.168.200.101
  274  rm -rf 192.168.200.101/
  275  ansible -m copy -a 'src=hello.sh dest=/home/devops/hi.sh mode=550 backup=true' mgmt
  276  ansible -m fetch -a 'src=/home/devops/hi.sh dest=/home/devops' mgmt
  277  ls
  278  ansible -m file -a 'path=/home/devops/hi.sh state=file' 192.168.200.101
  279  ansible -m file -a 'path=/home/devops/hi.sh state=directory' 192.168.200.101
  280  ansible -m file -a 'path=/home/devops/abe state=file' 192.168.200.101
  281  ansible -m file -a 'path=/home/devops/abc state=file' 192.168.200.101
  282  ansible -m file -a 'path=/home/devops/abc state=touch' 192.168.200.101
  283  ansible -m file -a 'path=/home/devops/abc state=file' 192.168.200.101
  284  ansible -m file -a 'path=/home/devops/xyz state=directory' 192.168.200.101
  285  ansible -m file -a 'path=/home/devops/xyz state=absent' 192.168.200.101
  286  ansible -m file -a 'path=/home/devops/abc state=file mode=777' 192.168.200.101
  287  ansible -m get_url -a 'url="https://wordpress.org/latest.tar.gz" dest=/home/dwvops/' 192.169.200.101
  288  ansible -m get_url -a 'url="https://wordpress.org/latest.tar.gz" dest=/home/dwvops/' 192.168.200.101
  289  ansible -m get_url -a 'url="https://wordpress.org/latest.tar.gz" dest=/home/devops/' 192.168.200.101
  290  ansible -m file -a 'path=/home/devops/wordpress-5.8.tar.gz state=file' 192.168.200.101
  291  ansible -m unarchive -a 'path=/home/devops/wordpress-5.8.tar.gz remote_src=true dest=/tmp' 192.168.200.101
  292  ansible -m unarchive -a 'src=/home/devops/wordpress-5.8.tar.gz remote_src=true dest=/tmp' 192.168.200.101
  293  ansible -m command -a 'ls -l /tmp' 192.168.200.101
  294  ansible -m uri -a 'url=http://example.com' 192.168.200.101
  295  ansible -m uri -a 'url=http://www.google.com' 192.168.200.101
  296  ansible -m uri -a 'url=http://www.naver.com' 192.168.200.101
  297  ansible -m commanr -a 'cat hi.sh' 192.168.200.101
  298  ansible -m command -a 'cat hi.sh' 192.168.200.101
  299  ansible -m replace -a 'path=/home/devops/hi.sh regexp="ldh" replace"Dahye" 192.168.200.101
  300  ansible -m replace -a 'path=/home/devops/hi.sh regexp="ldh" replace"Dahye"' 192.168.200.101
  301  ansible -m replace -a 'path=/home/devops/hi.sh regexp="ldh" replace="Dahye"' 192.168.200.101
  302  ansible -m command -a 'cat hi.sh' 192.168.200.101
  303  ansible -m replace -a 'path=/home/devops/hi.sh regexp="Dahye" line="dodu's cloud"' 192.168.200.101
  304  ansible -m linefile -a 'path=/home/devops/hi.sh regexp="Dahye" line="dodu's cloud"' 192.168.200.101
  305  ansible -m linefile -a 'path=/home/devops/hi.sh regexp="Dahye" line="ldh cloud"' 192.168.200.101
  306  ansible -m lineinfile -a 'path=/home/devops/hi.sh regexp="Dahye" line="ldh cloud"' 192.168.200.101
  307  ansible -m command -a 'cat hi.sh' 192.168.200.101
  308  ansible -m apt -a 'name=apache2 state=latest cache_update=true' -b 192.168.200.101
  309  ansible -m apt -a 'name=apache2 state=latest update_cache=true' -b 192.168.200.101
  310  ansible -m apt -a 'name=apache2 state=absent update_cache=true' -b 192.168.200.101
  311  ansible -m package -a 'name=apache2 state=present' -b 192.168.200.101
  312  ansible -m service -a 'name=apache2 state=startes' -b 192.168.200.101
  313  ansible -m service -a 'name=apache2 state=started' -b 192.168.200.101
  314  ansible -m service -a 'name=apache2 state=stopped' -b 192.168.200.101
  315  ansible -m service -a 'name=apache2 state=restarted' -b 192.168.200.101
  316  ansible -m service -a 'name=apache2 state=reload' -b 192.168.200.101
  317  ansible -m service -a 'name=apache2 state=reloaded' -b 192.168.200.101