ansible部署tomcat及 include机制推荐

1、本文尝试着使用ansible部署tomcat,test为测试工程

roles如下:

[lansgg@node1ansible_playbook]$pwd/opt/lansgg/ansible_playbook[lansgg@node1ansible_playbook]$lshostsrolessite.yml[lansgg@node1ansible_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.yml11directories,10files[lansgg@node1ansible_playbook]$

main.yml 如下:

[lansgg@node1tasks]$catmain.yml-name:将jdk压缩包copy到远程主机jdk-7u72-linux-x64.tar.gzcopy:src=jdk-7u72-linux-x64.tar.gzdest=/opt/lansgg/-name:解压jdk压缩包jdk-7u72-linux-x64.tar.gzshell:chdir=/opt/lansggtarzxvfjdk-7u72-linux-x64.tar.gz-name:将tomcat压缩包copy到远程主机apache-tomcat-7.0.68.tar.gzcopy:src=apache-tomcat-7.0.68.tar.gzdest=/opt/lansgg-name:解压tomcat压缩包shell:chdir=/opt/lansggtarzxvfapache-tomcat-7.0.68.tar.gz-name:将tomcat压缩包重新命名为tomcatshell:chdir=/opt/lansggmvapache-tomcat-7.0.68tomcat-name:将用户的.bashrc模板文件copy到远程主机copy:src=.bashrcdest=`ansible_user_dir`/-name:将用户的.bash_profile模板文件copy到远程主机copy:src=.bash_profiledest=`ansible_user_dir`/-name:首次启动tomcatshell:chdir=`ansible_user_dir`/tomcat/binnohup./startup.sh -name:将test工程copy到远程主机copy:src=/opt/lansgg/ansible_playbook/roles/http/meta/testdest=`ansible_user_dir`/tomcat/webapps/tags:-updateconfnotify:-stoptomcatservice-starttomcatservice-name:将某些模板文件copy到远程主机template:src=test.ymldest=`ansible_user_dir`/tomcat/webapps/test/test.html

handlers:

[lansgg@node1handlers]$moremain.yml-name:stoptomcatserviceshell:"ps-ef|grep`ansible_user_dir`/tomcat|grep-vgrep|awk'{print$2}'|xargskill-9"-name:starttomcatserviceshell:chdir=`ansible_user_dir`/tomcat/binnohup./startup.sh 

执行结果:

[lansgg@node1ansible_playbook]$ansible-playbook-ihostssite.ymlPLAY[http]*******************************************************************GATHERINGFACTS***************************************************************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|stoptomcatservice]****************************************changed:[192.168.100.131]NOTIFIED:[http|starttomcatservice]***************************************changed:[192.168.100.131]PLAYRECAP********************************************************************192.168.100.131:ok=13changed=12unreachable=0failed=0[lansgg@node1ansible_playbook]$

核实测试主机:

[lansgg@node1ansible_playbook]$ansible-ihostshttp-mshell-a'ps-ef|greptomcat|grep-vgrep'192.168.100.131|success|rc=0 lansgg540341613: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/temporg.apache.catalina.startup.Bootstrapstart[lansgg@node1ansible_playbook]$
[lansgg@node1ansible_playbook]$curlhttp://192.168.100.131:8080/test/test.htmlthisisatesthostname:v2.lansgg.comabcdefg[lansgg@node1ansible_playbook]$

测试更新操作:

1.1、修改测试文件:

[lansgg@node1ansible_playbook]$echo"abcdefg" roles/http/meta/test/test.html

执行:

[lansgg@node1ansible_playbook]$ansible-playbook-ihostssite.yml--tags=updateconfPLAY[http]*******************************************************************GATHERINGFACTS***************************************************************ok:[192.168.100.131]TASK:[http|将test工程copy到远程主机]***************************changed:[192.168.100.131]NOTIFIED:[http|stoptomcatservice]****************************************changed:[192.168.100.131]NOTIFIED:[http|starttomcatservice]***************************************changed:[192.168.100.131]PLAYRECAP********************************************************************192.168.100.131:ok=4changed=3unreachable=0failed=0[lansgg@node1ansible_playbook]$[lansgg@node1ansible_playbook]$curlhttp://192.168.100.131:8080/test/test.htmlthisisatesthostname:hostname1111111111111111111111111111[lansgg@node1ansible_playbook]$ansible-ihostshttp-mshell-a'ps-ef|greptomcat|grep-vgrep'192.168.100.131|success|rc=0 lansgg5423612413: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/temporg.apache.catalina.startup.Bootstrapstart[lansgg@node1ansible_playbook]$

2、ansible 中的include 机制

测试目的,可以随意指定要操作的主机组 和 要操作的状态

[lansgg@node1ansible_playbook]$pwd/opt/lansgg/ansible_playbook[lansgg@node1ansible_playbook]$tree├──hosts├──roles│└──test│└──tasks│├──del.yml│├──main.yml│└──touch.yml└──test.yml3directories,5files[lansgg@node1ansible_playbook]$

tasks:

[lansgg@node1ansible_playbook]$catroles/test/tasks/touch.yml-name:touchfileshell:touch/tmp/123[lansgg@node1ansible_playbook]$catroles/test/tasks/del.yml-name:delfileshell:rm/tmp/123[lansgg@node1ansible_playbook]$catroles/test/tasks/main.yml-name:includetouchymlinclude:touch.ymlwhen:"state=='touch'"-name:includedelymlinclude:del.ymlwhen:"state=='del'"[lansgg@node1ansible_playbook]$[lansgg@node1ansible_playbook]$cattest.yml-hosts:'`testhost`'remote_user:lansggroles:-test[lansgg@node1ansible_playbook]$cathosts[http]192.168.100.131192.168.100.132[lansgg@node1ansible_playbook]$

执行并查看结果:

[lansgg@node1ansible_playbook]$ansible-playbook-ihoststest.yml--extra-vars"testhost=httpstate=touch"PLAY[http]*******************************************************************GATHERINGFACTS***************************************************************ok:[192.168.100.131]TASK:[test|touchfile]*****************************************************changed:[192.168.100.131]TASK:[test|delfile]*******************************************************skipping:[192.168.100.131]PLAYRECAP********************************************************************192.168.100.131:ok=2changed=1unreachable=0failed=0

上面是创建文件,我们也可以删除操作

[lansgg@node1ansible_playbook]$ansible-playbook-ihoststest.yml--extra-vars"testhost=httpstate=del"PLAY[http]*******************************************************************GATHERINGFACTS***************************************************************ok:[192.168.100.131]TASK:[test|touchfile]*****************************************************skipping:[192.168.100.131]TASK:[test|delfile]*******************************************************changed:[192.168.100.131]PLAYRECAP********************************************************************192.168.100.131:ok=2changed=1unreachable=0failed=0[lansgg@node1ansible_playbook]$ansible-ihostshttp-mshell-a'ls-l/tmp/'192.168.100.131|success|rc=0 total0[lansgg@node1ansible_playbook]$

可以以命令式的方式控制要操作的主机及状态 (对 db 主机组操作)

[lansgg@node1ansible_playbook]$ansible-playbook-ihoststest.yml--extra-vars"testhost=dbstate=touch"PLAY[db]*********************************************************************GATHERINGFACTS***************************************************************ok:[192.168.100.132]TASK:[test|touchfile]*****************************************************changed:[192.168.100.132]TASK:[test|delfile]*******************************************************skipping:[192.168.100.132]PLAYRECAP********************************************************************192.168.100.132:ok=2changed=1unreachable=0failed=0[lansgg@node1ansible_playbook]$ansible-ihostsdb-mshell-a'ls-l/tmp/'192.168.100.132|success|rc=0 total0-rw-rw-r--1lansgglansgg0Mar916:20123[lansgg@node1ansible_playbook]$

删除操作:

[lansgg@node1ansible_playbook]$ansible-playbook-ihoststest.yml--extra-vars"testhost=dbstate=del"PLAY[db]*********************************************************************GATHERINGFACTS***************************************************************ok:[192.168.100.132]TASK:[test|touchfile]*****************************************************skipping:[192.168.100.132]TASK:[test|delfile]*******************************************************changed:[192.168.100.132]PLAYRECAP********************************************************************192.168.100.132:ok=2changed=1unreachable=0failed=0[lansgg@node1ansible_playbook]$ansible-ihostsdb-mshell-a'ls-l/tmp/'192.168.100.132|success|rc=0 total0[lansgg@node1ansible_playbook]$

也许叔本华是对的,人与人的距离太远会寂寞到寒冷,

ansible部署tomcat及 include机制推荐

相关文章:

你感兴趣的文章:

标签云: