我在Ansible-galaxy下安装Jenkins的经历

因为学习了Ansible和Jenkins。

既然如此我使用Ansible安装了Jenkins到自己身上,作为备忘录发表了这篇帖子。

Ansible是什么意思?

省略 means “omission” or “to omit” in Chinese. It is the act of excluding or leaving out certain things or information.

To paraphrase “省略” natively in Chinese, we can say:
– 省去 qù)
– 省略掉
– 忽略 (hū
– 省去不提 qù bù tí)
– 舍弃 (shě qì)

Jenkins 是什麼?

节约

Ansible-galaxy是什么意思?

可以共享角色的中心服务

为了解决配置文件变得庞大和管理复杂的问题,role被设想出来(类似于编程中的class)。

换句话说,即使没有详细的设置文件(play-book),只需导入角色并执行,环境就会完全准备好,这是非常优秀的。
当然,前提是ansible-galaxy上有所需的角色。

马上试一试

作为一个直接坦率的人,我首先会”ansible-galaxy jenkin”在谷歌上搜索一下。

在搜索结果的顶部,有这样一个角色。
链接:https://galaxy.ansible.com/geerlingguy/jenkins/

杰灵盖伊.詹金斯

↑最后的提交也是最近的,我尝试在这里做一下。

要安装,请执行以下命令。

环境:
Centos7操作系统
Ansible 2.5版本。

ansible-galaxy install geerlingguy.jenkins

那么我们立刻开始吧!

[vagrant@centos7 /]$ ansible-galaxy install geerlingguy.jenkins
- downloading role 'jenkins', owned by geerlingguy
- downloading role from https://github.com/geerlingguy/ansible-role-jenkins/archive/3.3.1.tar.gz
- extracting geerlingguy.jenkins to /home/vagrant/.ansible/roles/geerlingguy.jenkins
- geerlingguy.jenkins (3.3.1) was installed successfully
- adding dependency: geerlingguy.java
- downloading role 'java', owned by geerlingguy
- downloading role from https://github.com/geerlingguy/ansible-role-java/archive/1.7.7.tar.gz
- extracting geerlingguy.java to /home/vagrant/.ansible/roles/geerlingguy.java
- geerlingguy.java (1.7.7) was installed successfully
[vagrant@centos7 /]$

搞定了!听说你也获得了Java的职位
※ 因为在Jenkins上必须有Java环境

接着写下来,我会为了将其部署到自己身上编写一个play-book。
* 请将play-book理解为适用于Ansible的专门操作步骤说明书。

这是我准备的Play-book。

- hosts: localhost
  roles:
    - { role: geerligguy.jenkins }

~

只要我們一起取得了geerligguy.java,如果你的Java版本是1.8或更高版本的話,就不需要它了。
↑當我們運行geerligguy.jenkins時,Java不需要特別寫出來,它就運行了。

接着准备好清单文件。

localhost

准备工作已完成,马上开始行动吧!

[vagrant@centos7 ~]$ ansible-playbook -i hosts main.yml
ERROR! the role 'geerligguy.jenkins' was not found in /home/vagrant/roles:/home/vagrant/.ansible/roles:/usr/share/ansible/roles:/etc/ansible/roles:/home/vagrant

The error appears to have been in '/home/vagrant/main.yml': line 3, column 7, but may
be elsewhere in the file depending on the exact syntax problem.

The offending line appears to be:

  roles:
    - { role: geerligguy.jenkins }
      ^ here

[vagrant@centos7 ~]$

噢、失败了。

看了日志估计是在说“找不到那个角色”。顺便一提,我没有掌握从ansible-galaxy下载的角色的位置。。。

我找了。

[vagrant@centos7 ~]$ ll -a
total 32
drwx------. 8 vagrant vagrant  214 Apr  9 06:59 .
drwxr-xr-x. 3 root    root      21 Feb 28 17:52 ..
drwx------. 6 vagrant vagrant   79 Apr  6 02:24 .ansible ←このなかにいました。

~(略)~
[vagrant@centos7 ~]$ cd .ansible/
[vagrant@centos7 .ansible]$
[vagrant@centos7 .ansible]$ ll
total 12
drwx------.  2 vagrant vagrant    6 Apr  6 01:16 cp
drwxrwxr-x.  2 vagrant vagrant   30 Apr  7 06:28 pc
drwxrwxr-x.  5 vagrant vagrant   83 Apr  9 06:52 roles ←さらにこのなかに発見
drwx------. 29 vagrant vagrant 4096 Apr  9 07:02 tmp
[vagrant@centos7 .ansible]$
[vagrant@centos7 .ansible]$ cd roles/
[vagrant@centos7 roles]$ ll
total 0
drwxrwxr-x. 8 vagrant vagrant 158 Apr  9 06:52 geerlingguy.java
drwxrwxr-x. 9 vagrant vagrant 174 Apr  9 06:52 geerlingguy.jenkins
[vagrant@centos7 roles]$

找到了~,那么似乎只需要在这一段上准备一个文件就可以了。
※简单地将引用位置设为这个文件也可以。

[vagrant@centos7 .ansible]$ ll
total 12
drwx------.  2 vagrant vagrant    6 Apr  6 01:16 cp
-rw-rw-r--.  1 vagrant vagrant   10 Apr  6 01:02 hosts
-rw-rw-r--.  1 vagrant vagrant  146 Apr  6 02:24 main.yml
drwxrwxr-x.  2 vagrant vagrant   30 Apr  7 06:28 pc
drwxrwxr-x.  5 vagrant vagrant   83 Apr  9 06:52 roles
drwx------. 29 vagrant vagrant 4096 Apr  9 07:10 tmp

因此,对这样的结构进行更改。

重新尝试


[vagrant@centos7 .ansible]$ ansible-playbook -i hosts main.yml
[DEPRECATION WARNING]: Instead of sudo/sudo_user, use become/become_user and make sure become_method is 'sudo' (default). This feature will be removed in version 2.6. Deprecation
 warnings can be disabled by setting deprecation_warnings=False in ansible.cfg.
[DEPRECATION WARNING]: The use of 'static' has been deprecated. Use 'import_tasks' for static inclusion, or 'include_tasks' for dynamic inclusion. This feature will be removed in
 a future release. Deprecation warnings can be disabled by setting deprecation_warnings=False in ansible.cfg.

PLAY [localhost] ******************************************************************************************************************************************************************

TASK [Gathering Facts] ************************************************************************************************************************************************************
ok: [localhost]

~(略)~

TASK [geerlingguy.jenkins : Install Jenkins plugins using password.] **************************************************************************************************************

TASK [geerlingguy.jenkins : Install Jenkins plugins using token.] *****************************************************************************************************************

PLAY RECAP ************************************************************************************************************************************************************************
localhost                  : ok=29   changed=9    unreachable=0    failed=0

[vagrant@centos7 .ansible]$

这次好像顺利了!

[vagrant@centos7 .ansible]$ syetemctl status jenkins
-bash: syetemctl: command not found
[vagrant@centos7 .ansible]$ systemctl status jenkins
● jenkins.service - LSB: Jenkins Automation Server
   Loaded: loaded (/etc/rc.d/init.d/jenkins; bad; vendor preset: disabled)
   Active: active (running) since Mon 2018-04-09 07:15:36 UTC; 9min ago
     Docs: man:systemd-sysv-generator(8)
  Process: 3185 ExecStop=/etc/rc.d/init.d/jenkins stop (code=exited, status=0/SUCCESS)
  Process: 3210 ExecStart=/etc/rc.d/init.d/jenkins start (code=exited, status=0/SUCCESS)
   CGroup: /system.slice/jenkins.service
           mq3232 /etc/alternatives/java -Dcom.sun.akuma.Daemon=daemonized -Djava.awt.headless=true -Djenkins.install.runSetupWizard=false -DJENKINS_HOME=/var/lib/jenkins -jar ...
[vagrant@centos7 .ansible]$

可以了!

总结

这次我尝试使用Ansible-galaxy来部署Jenkins。最终成功安装,感到非常满意。但由于对内容不太理解,我希望能阅读角色中的内容,了解其具体运作方式,以便学习。

※额外说明

我在ansible-galaxy中安装的java似乎是1.7版本,而jenkins需要的是1.8版本,因此仅仅执行这个role不会成功。真是个陷阱…

请尝试手动安装Java 1.8版本。
参考指令:
yum安装java-1.8.0-openjdk。

bannerAds