ansible 배치 tomcat 및 include 메커니즘
roles 는 다음 과 같 습 니 다:
[lansgg@node1 ansible_playbook]$ pwd
/opt/lansgg/ansible_playbook
[lansgg@node1 ansible_playbook]$ ls
hosts roles site.yml
[lansgg@node1 ansible_playbook]$ tree
.
├── hosts
├── roles
│ └── http
│ ├── default
│ ├── files
│ │ ├── apache-tomcat-7.0.68.tar.gz
│ │ ├── jdk-7u72-linux-x64.tar.gz
│ │ └── ROOT
│ │ └── test.html
│ ├── handlers
│ │ └── main.yml
│ ├── meta
│ │ └── test
│ │ └── test.html
│ ├── tasks
│ │ ├── bak.yml
│ │ └── main.yml
│ ├── templates
│ │ └── test.yml
│ └── vars
└── site.yml
11 directories, 10 files
[lansgg@node1 ansible_playbook]$
main.yml 은 다음 과 같 습 니 다.
[lansgg@node1 tasks]$ cat main.yml
- name: jdk copy jdk-7u72-linux-x64.tar.gz
copy: src=jdk-7u72-linux-x64.tar.gz dest=/opt/lansgg/
- name: jdk jdk-7u72-linux-x64.tar.gz
shell: chdir=/opt/lansgg tar zxvf jdk-7u72-linux-x64.tar.gz
- name: tomcat copy apache-tomcat-7.0.68.tar.gz
copy: src=apache-tomcat-7.0.68.tar.gz dest=/opt/lansgg
- name: tomcat
shell: chdir=/opt/lansgg tar zxvf apache-tomcat-7.0.68.tar.gz
- name: tomcat tomcat
shell: chdir=/opt/lansgg mv apache-tomcat-7.0.68 tomcat
- name: .bashrc copy
copy: src=.bashrc dest=`ansible_user_dir`/
- name: .bash_profile copy
copy: src=.bash_profile dest=`ansible_user_dir`/
- name: tomcat
shell: chdir=`ansible_user_dir`/tomcat/bin nohup ./startup.sh &
- name: test copy
copy: src=/opt/lansgg/ansible_playbook/roles/http/meta/test dest=`ansible_user_dir`/tomcat/webapps/
tags:
- updateconf
notify:
- stop tomcat service
- start tomcat service
- name: copy
template: src=test.yml dest=`ansible_user_dir`/tomcat/webapps/test/test.html
handlers:
[lansgg@node1 handlers]$ more main.yml
- name: stop tomcat service
shell: "ps -ef |grep `ansible_user_dir`/tomcat |grep -v grep |awk '{print $2}' |xargs kill -9"
- name: start tomcat service
shell: chdir=`ansible_user_dir`/tomcat/bin nohup ./startup.sh &
실행 결과:
[lansgg@node1 ansible_playbook]$ ansible-playbook -i hosts site.yml
PLAY [http] *******************************************************************
GATHERING FACTS ***************************************************************
ok: [192.168.100.131]
TASK: [http | jdk copy jdk-7u72-linux-x64.tar.gz] ***
changed: [192.168.100.131]
TASK: [http | jdk jdk-7u72-linux-x64.tar.gz] *******************
changed: [192.168.100.131]
TASK: [http | tomcat copy apache-tomcat-7.0.68.tar.gz] ***
changed: [192.168.100.131]
TASK: [http | tomcat ] ******************************************
changed: [192.168.100.131]
TASK: [http | tomcat tomcat] **********************
changed: [192.168.100.131]
TASK: [http | .bashrc copy ] *********
changed: [192.168.100.131]
TASK: [http | .bash_profile copy ] ***
changed: [192.168.100.131]
TASK: [http | tomcat] *********************************************
changed: [192.168.100.131]
TASK: [http | test copy ] ***************************
changed: [192.168.100.131]
TASK: [http | copy ] *********************
changed: [192.168.100.131]
NOTIFIED: [http | stop tomcat service] ****************************************
changed: [192.168.100.131]
NOTIFIED: [http | start tomcat service] ***************************************
changed: [192.168.100.131]
PLAY RECAP ********************************************************************
192.168.100.131 : ok=13 changed=12 unreachable=0 failed=0
[lansgg@node1 ansible_playbook]$
테스트 호스트 확인:
[lansgg@node1 ansible_playbook]$ ansible -i hosts http -m shell -a 'ps -ef|grep tomcat |grep -v grep'
192.168.100.131 | success | rc=0 >>
lansgg 54034 1 6 13:09 ? 00:00:06 /opt/lansgg/jdk1.7.0_72/jre/bin/java -Djava.util.logging.config.file=/opt/lansgg/tomcat/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.endorsed.dirs=/opt/lansgg/tomcat/endorsed -classpath /opt/lansgg/tomcat/bin/bootstrap.jar:/opt/lansgg/tomcat/bin/tomcat-juli.jar -Dcatalina.base=/opt/lansgg/tomcat -Dcatalina.home=/opt/lansgg/tomcat -Djava.io.tmpdir=/opt/lansgg/tomcat/temp org.apache.catalina.startup.Bootstrap start
[lansgg@node1 ansible_playbook]$
[lansgg@node1 ansible_playbook]$ curl http://192.168.100.131:8080/test/test.html
this is a test
hostname:v2.lansgg.com
abcdefg
[lansgg@node1 ansible_playbook]$
테스트 업데이트 작업:
1.1.테스트 파일 수정:
[lansgg@node1 ansible_playbook]$ echo "abcdefg" >> roles/http/meta/test/test.html
실행:
[lansgg@node1 ansible_playbook]$ ansible-playbook -i hosts site.yml --tags=updateconf
PLAY [http] *******************************************************************
GATHERING FACTS ***************************************************************
ok: [192.168.100.131]
TASK: [http | test copy ] ***************************
changed: [192.168.100.131]
NOTIFIED: [http | stop tomcat service] ****************************************
changed: [192.168.100.131]
NOTIFIED: [http | start tomcat service] ***************************************
changed: [192.168.100.131]
PLAY RECAP ********************************************************************
192.168.100.131 : ok=4 changed=3 unreachable=0 failed=0
[lansgg@node1 ansible_playbook]$
[lansgg@node1 ansible_playbook]$ curl http://192.168.100.131:8080/test/test.html
this is a test
hostname:hostname
1111111111111111111111111111
[lansgg@node1 ansible_playbook]$ ansible -i hosts http -m shell -a 'ps -ef|grep tomcat |grep -v grep'
192.168.100.131 | success | rc=0 >>
lansgg 54236 1 24 13:11 ? 00:00:05 /opt/lansgg/jdk1.7.0_72/jre/bin/java -Djava.util.logging.config.file=/opt/lansgg/tomcat/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.endorsed.dirs=/opt/lansgg/tomcat/endorsed -classpath /opt/lansgg/tomcat/bin/bootstrap.jar:/opt/lansgg/tomcat/bin/tomcat-juli.jar -Dcatalina.base=/opt/lansgg/tomcat -Dcatalina.home=/opt/lansgg/tomcat -Djava.io.tmpdir=/opt/lansgg/tomcat/temp org.apache.catalina.startup.Bootstrap start
[lansgg@node1 ansible_playbook]$
2.ansible 의 include 메커니즘
테스트 목적,작업 할 호스트 그룹 과 작업 할 상 태 를 임의로 지정 할 수 있 습 니 다.
[lansgg@node1 ansible_playbook]$ pwd
/opt/lansgg/ansible_playbook
[lansgg@node1 ansible_playbook]$ tree
.
├── hosts
├── roles
│ └── test
│ └── tasks
│ ├── del.yml
│ ├── main.yml
│ └── touch.yml
└── test.yml
3 directories, 5 files
[lansgg@node1 ansible_playbook]$
tasks:
[lansgg@node1 ansible_playbook]$ cat roles/test/tasks/touch.yml
- name: touch file
shell: touch /tmp/123
[lansgg@node1 ansible_playbook]$ cat roles/test/tasks/del.yml
- name: del file
shell: rm /tmp/123
[lansgg@node1 ansible_playbook]$ cat roles/test/tasks/main.yml
- name: include touch yml
include: touch.yml
when: "state=='touch'"
- name: include del yml
include: del.yml
when: "state=='del'"
[lansgg@node1 ansible_playbook]$
[lansgg@node1 ansible_playbook]$ cat test.yml
- hosts: '`testhost`'
remote_user: lansgg
roles:
- test
[lansgg@node1 ansible_playbook]$ cat hosts
[http]
192.168.100.131
[db]
192.168.100.132
[lansgg@node1 ansible_playbook]$
실행 및 결과 보기:
[lansgg@node1 ansible_playbook]$ ansible-playbook -i hosts test.yml --extra-vars "testhost=http state=touch"
PLAY [http] *******************************************************************
GATHERING FACTS ***************************************************************
ok: [192.168.100.131]
TASK: [test | touch file] *****************************************************
changed: [192.168.100.131]
TASK: [test | del file] *******************************************************
skipping: [192.168.100.131]
PLAY RECAP ********************************************************************
192.168.100.131 : ok=2 changed=1 unreachable=0 failed=0
위 에 파일 을 만 드 는 것 입 니 다.작업 도 삭제 할 수 있 습 니 다.
[lansgg@node1 ansible_playbook]$ ansible-playbook -i hosts test.yml --extra-vars "testhost=http state=del"
PLAY [http] *******************************************************************
GATHERING FACTS ***************************************************************
ok: [192.168.100.131]
TASK: [test | touch file] *****************************************************
skipping: [192.168.100.131]
TASK: [test | del file] *******************************************************
changed: [192.168.100.131]
PLAY RECAP ********************************************************************
192.168.100.131 : ok=2 changed=1 unreachable=0 failed=0
[lansgg@node1 ansible_playbook]$ ansible -i hosts http -m shell -a 'ls -l /tmp/'
192.168.100.131 | success | rc=0 >>
total 0
[lansgg@node1 ansible_playbook]$
실행 할 호스트 와 상 태 를 명령 식 으로 제어 할 수 있 습 니 다(db 호스트 그룹 에 대한 작업)
[lansgg@node1 ansible_playbook]$ ansible-playbook -i hosts test.yml --extra-vars "testhost=db state=touch"
PLAY [db] *********************************************************************
GATHERING FACTS ***************************************************************
ok: [192.168.100.132]
TASK: [test | touch file] *****************************************************
changed: [192.168.100.132]
TASK: [test | del file] *******************************************************
skipping: [192.168.100.132]
PLAY RECAP ********************************************************************
192.168.100.132 : ok=2 changed=1 unreachable=0 failed=0
[lansgg@node1 ansible_playbook]$ ansible -i hosts db -m shell -a 'ls -l /tmp/'
192.168.100.132 | success | rc=0 >>
total 0
-rw-rw-r-- 1 lansgg lansgg 0 Mar 9 16:20 123
[lansgg@node1 ansible_playbook]$
삭제 작업:
[lansgg@node1 ansible_playbook]$ ansible-playbook -i hosts test.yml --extra-vars "testhost=db state=del"
PLAY [db] *********************************************************************
GATHERING FACTS ***************************************************************
ok: [192.168.100.132]
TASK: [test | touch file] *****************************************************
skipping: [192.168.100.132]
TASK: [test | del file] *******************************************************
changed: [192.168.100.132]
PLAY RECAP ********************************************************************
192.168.100.132 : ok=2 changed=1 unreachable=0 failed=0
[lansgg@node1 ansible_playbook]$ ansible -i hosts db -m shell -a 'ls -l /tmp/'
192.168.100.132 | success | rc=0 >>
total 0
[lansgg@node1 ansible_playbook]$
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
EC2 인스턴스에 Tomcat 설치전제 조건: Amazon 계정이 있어야 합니다. Amazon 계정에 로그인하고 EC2 인스턴스를 시작합니다. 여기에서 프리 티어를 선택했고 Amazon Linux 2를 실행하는 EC2 인스턴스를 시작했습니다. 시작 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.