初学ansible,在使用playbook在远端主机安装jdk时出现的问题思考

新工作一个月了, 慢慢会有批量性的组件需要安装,来了两次之后发现,哇,手动搞真的不行了,累出屎!!!
小弟需要早点把ansible批量部署给搞会了。

今天测试了下用ansible安装jdk。
步骤:
1.从远端主机复制 jdk-8u181-linux-x64.tar.gz 二进制包到客户机的 /usr/local 目录下;
2.在客户机实现解压到 /usr/local;
3.配置环境变量;

- hosts: weige
  tasks:  
  - name: fuzhiwenjian
    copy: "src=/usr/local/jdk-8u181-linux-x64.tar.gz dest=/usr/local"
  - name: jinmulu
    shell: "cd /usr/local"
  - name: jieya
    shell: "tar xvzf jdk-8u181-linux-x64.tar.gz"
这样写完命令之后测试了几次,发现解压会失败,但是文件是复制到相应的目录下了。这是为什么呢?
带着这个疑问,我就试呀,还就真的找到原因了!
ansible-playbook里面的task任务它妹的默认路径是用户登陆的根目录下 ,所以在第二个task 下我进去了 /usr/local/, 但是并没有用,在到第三个task 时系统还是会都 /root/ 下面去找压缩包 ,找不到所以失败。
好呗,那就改!
    [root@weige ansible]# cat anzjdk.yml 
- hosts: weige
  tasks:
  - name: fuzhiwenjian
    copy: "src=/usr/local/jdk-8u181-linux-x64.tar.gz dest=/usr/local"
  - name: jieya
    shell: "tar xvzf /usr/local/jdk-8u181-linux-x64.tar.gz -C /usr/local"

解压时指定二进制包的目录,才能正常解压。
注意:后面我又指定了解压后文件的目录 “-C /usr/local” , 因为你不指定的话,又会跑到 /root/ 根目录下,我丢!!!

最后是环境变量要添加:

- hosts: weige
  tasks:
  - name: fuzhiwenjian
    copy: "src=/usr/local/jdk-8u181-linux-x64.tar.gz dest=/usr/local"
  - name: jieya
    shell: "tar xvzf /usr/local/jdk-8u181-linux-x64.tar.gz -C /usr/local"
  - name: huanjingbianliang
    shell: "echo 'export JAVA_HOME=/usr/local/jdk1.8.0_181' >> /etc/profile"
  - name: huanjingbianliang
    shell: "echo 'export PATH=$JAVA_HOME/bin:$PATH' >> /etc/profile"
  - name: huanjingbianliang
    shell: "echo 'export CLASSPATH=.:/$JAVA_HOME/lib/dt.jar:/$JAVA_HOME/lib/tools.jar' >> /etc/profile"

后面的环境变量应该是可以一次性添加完成的吧,现在还不会,后面在改善,要吃饭了!!!

对了,加完环境变量需要 source /etc/profile 哟!!!

完了用 java -version 查看是否安装成功!

9月计划将几个常用的中间件全部都给用ansible写一遍,希望能完成,虽然有很多单机都没安装过,嘻嘻!

每天进步一点,明年今日大不同!

猜你喜欢

转载自blog.csdn.net/SONGW2018/article/details/82316656