站長資訊網(wǎng)
        最全最豐富的資訊網(wǎng)站

        通過 Ansible 創(chuàng)建 Jenkins Server

        創(chuàng)建 CI 流程的第一件事應(yīng)該是安裝 CI 工具,本文以最常見的 Jenkins 為例,介紹如何使用 Ansible 自動安裝 Jenkins Server。說明:本文的演示環(huán)境為 Ubuntu 16.04。

        Ansible roles(角色)

        Ansible 中除了 playbook,還有更高層級的抽象,稱為 role(角色)。所謂的 role 其實就是把一些 playbook 組織成為一個更簡潔、清晰的可重用對象。比如把安裝 Jenkins Server 的 playbook 組織成為一個 role。
        感謝開源社區(qū),當(dāng)我們需要安裝 Jenkins Server 的時候并不需要自己寫一個對應(yīng)的 role,直接使用大神們寫好的就可以了。

        Ansible Galaxy
        Ansible Galaxy 是社區(qū)和分享 Ansible role 的地方。直接搜索 jenkins,由 geerlingguy 貢獻的 jenkins role 是目前最受歡迎的:

        通過 Ansible 創(chuàng)建 Jenkins Server

        ansible-galaxy 命令
        通過 ansible-galaxy 命令可以把上面搜索到的 role 安裝到本地:

        $ ansible-galaxy install geerlingguy.jenkins

        由于 geerlingguy.jenkins role 依賴 geerlingguy.java role,所以在安裝 geerlingguy.jenkins role 的同時也安裝了 geerlingguy.java role。默認的安裝目錄在當(dāng)前用戶家目錄下的 .ansible/roles
        同時會安裝其依賴的 geerlingguy.java role(能夠自行處理依賴關(guān)系):

        通過 Ansible 創(chuàng)建 Jenkins Server

        了解 jenkins role 的基本配置

        我們安裝的 geerlingguy.jenkins role 的主要配置文件為:~/.ansible/roles/geerlingguy.jenkins/defaults/main.yml。下面介紹一下其中的一些比較重要的配置項。
        jenkins_package_state: present
        安裝的 jenkins 版本,present 表示僅安裝系統(tǒng)默認包中的版本,如果需要最新版本的 jenkins,需要把 jenkins_package_state 設(shè)置為 latest。

        jenkins_hostname: localhost
        通過 http 協(xié)議訪問 Jenkins 時使用的域名或主機名稱,作為演示,設(shè)置為 localhost 就可以了。

        jenkins_home: /var/lib/jenkins
        Jenkins 的主目錄。

        jenkins_http_port: 8080
        Jenkins 服務(wù)器監(jiān)聽的端口號。

        jenkins_url_prefix: “”
        如果不想通過域名或主機名稱直接訪問 Jenkins,可以設(shè)置 jenkins_url_prefix 變量。比如設(shè)置為 /jenkins,這樣我們就需要通過下面的 URL 來訪問 Jenkins server 了:
        http://localhost:8080/jenkins

        jenkins_jar_location: /opt/jenkins-cli.jar
        Jenkins CLI 程序的位置,該程序主要用來以命令行的方式與 Jenkins server 交互。

        jenkins_plugins: []
        指定在安裝 Jenkins server 的同時安裝的插件,默認是一個插件都不裝的:

        通過 Ansible 創(chuàng)建 Jenkins Server

        如果需要安裝插件,使用逗號分隔插件名稱并寫入到中括號中就可以了,下面是一個小 demo:
        [junit,greenballs,git]

        jenkins_plugins_state: present
        指定插件的版本,如果設(shè)置為 latest,就會保證所有的插件都是最新版本。

        jenkins_plugin_timeout: 30
        安裝插件時的連接超時時間。需要注意安裝插件時的超時問題,國內(nèi)安裝插件非常耗時,最好把 jenkins_plugin_timeout 設(shè)置的大些,不然經(jīng)常會碰到 timeout 錯誤:

        通過 Ansible 創(chuàng)建 Jenkins Server

        jenkins_plugins_install_dependencies: true
        安裝插件時是否安裝其所依賴的插件。

        jenkins_admin_username: admin
        jenkins_admin_password: admin
        安裝 Jenkins 時創(chuàng)建的管理員賬號和密碼。

        jenkins_java_options: “-Djenkins.install.runSetupWizard=false”
        可以通過 jenkins_java_options 來設(shè)置額外的 java 命令行參數(shù)。比如我們可以通過下面的配置來設(shè)置 Jenkings server 的時區(qū)為紐約:
        jenkins_java_options: “-Dorg.apache.commons.jelly.tags.fmt.timeZone=America/New_York”

        jenkins_version: “1.644”
        jenkins_pkg_url: “http://www.example.com”
        這兩個配置是可選的,通過 jenkins_version 變量我們可以指定安裝的 Jenkins 版本,這樣每次都會安裝相同的版本,當(dāng)然必須是出現(xiàn)在 http://pkg.jenkins-ci.org/debian/ (Ubuntu)中的版本。
        如果你不想使用官方的包,可以通過 jenkins_pkg_url 指定自己的包。默認這兩個選項是被注釋掉的,也就是說會安裝官方的包。

        jenkins_connection_delay: 5
        jenkins_connection_retries: 60
        啟動后連接到 Jenkins 時需要等待的時間和次數(shù),以驗證 Jenkins 是否正在運行。等待的總時間=延遲*重試,因此默認情況下,這個角色在超時前將等待 300 秒。

        jenkins_init_changes:
          – option: “JENKINS_ARGS”
            value: “–prefix={{ jenkins_url_prefix }}”
          – option: “JENKINS_JAVA_OPTIONS”
            value: “{{ jenkins_java_options }}”
        修改 Jenkings 的初始腳本,默認的更改設(shè)置了配置的 URL 前綴,并為 Jenkins 的啟動添加了配置的 Java 選項。如果要為 Jenkins 的初始化腳本設(shè)置其他選項,添加其他的 選項/值 就可以了。

        下面的配置與平臺相關(guān),所以 Ubuntu 相關(guān)的配置放在配置文件 ~/.ansible/roles/geerlingguy.jenkins/vars/Debian.yml 中:
        # For Debian (role default):
        __jenkins_repo_url: deb https://pkg.jenkins.io/debian binary/
        __jenkins_repo_key_url: https://pkg.jenkins.io/debian/jenkins.io.key
        默認安裝的是 Jenkins 的最新版本,如果要安裝穩(wěn)定版本請設(shè)置為下面的配置:
        # For Debian/Ubuntu LTS:
        __jenkins_repo_url: deb http://pkg.jenkins-ci.org/debian-stable binary/
        __jenkins_repo_key_url: http://pkg.jenkins-ci.org/debian-stable/jenkins-ci.org.key

        先在目標(biāo)機器上安裝 curl

        由于在安裝 Jenkins 的時候需要用到 curl 工具,所以有必要先安裝該工具。具體的做法我們可以寫一個簡單 playbook 來實現(xiàn),把下面的內(nèi)容保存到文件 pb_curl.yml 文件中:

        ---  - hosts: jenkinsservers    become: true    become_user: root    tasks:      - name: install curl on Ubuntu        apt:          name: curl          state: 'latest'          update_cache: no

        然后在 /etc/ansible/hosts 文件中添加一個組 jenkinsservers 來保存目標(biāo)主機:

        [jenkinsservers]  192.168.21.145

        最后執(zhí)行命令在目標(biāo)機器上安裝 curl:

        $ ansible-playbook -u nick pb_curl.yml

        如果你還不熟悉 Ansible 及其 playbook,請參考筆者的《Ansible 簡介》一文。

        安裝 Jenkins

        下面我們創(chuàng)建一個非常簡單的 playbook 文件 pb_jenkins.yml,其中引用已經(jīng)安裝好的 role 來完成 jenkins 的安裝:

        ---  - hosts: jenkinsservers    vars:      jenkins_hostname: localhost    roles:      - role: geerlingguy.java        become: yes      - role: geerlingguy.jenkins        become: yes

        注意,playbook 中先配置了 geerlingguy.java 來安裝 Jenkins 依賴的 java。
        執(zhí)行下面的命令進行安裝:

        $ ansible-playbook -u nick pb_jenkins.yml 

        安裝成功后,到目標(biāo)機器上檢查一下:

        通過 Ansible 創(chuàng)建 Jenkins Server

        Jenkins 服務(wù)器已經(jīng)可以正常運行了,但此時只能通過 localhost 在本機訪問。如果需要在局域網(wǎng)內(nèi)訪問,在配置文件中把 localhost 換成主機的 IP 就可以了。
        注意,Ansible 的命令是可以重復(fù)執(zhí)行的,如果因為網(wǎng)絡(luò)等原因造成的失敗問題,可以調(diào)整相關(guān)的超時參數(shù)然后重新執(zhí)行一遍就行了。

        總結(jié)

        對于自動化來說,其本質(zhì)是件一直在路上的工作。明確目標(biāo),然后找對工具進行持續(xù)的改進。筆者認為  Ansible 就是這么一款值得信賴的自動化利器,并且它能夠通過 playbook 和 role 等概念把我們的使用經(jīng)驗積淀下來進行分享。

        參考:
        Integrating Ansible with Jenkins in a CI/CD process
        ansible-role-jenkins
        galaxy role jenkins(geerlingguy)

        贊(0)
        分享到: 更多 (0)
        網(wǎng)站地圖   滬ICP備18035694號-2    滬公網(wǎng)安備31011702889846號
        主站蜘蛛池模板: 无码人妻精品一区二| 一级A毛片免费观看久久精品| 国产精品人人做人人爽人人添| 中文字幕日韩精品无码内射| 久久精品视频网| 国产在线精品无码二区| 中文字幕日韩精品在线| 国产精品最新国产精品第十页| 高清在线亚洲精品国产二区| 亚洲精品无码久久久久sm| 精品乱码久久久久久夜夜嗨| 亚洲欧美日韩精品久久| 国产精品999| 国产精品毛片VA一区二区三区| 中文精品久久久久人妻| 久久精品一区二区影院| 国产精品亚洲精品日韩已方| 久草视频在线这里精品| 国内精品久久久人妻中文字幕| 亚洲码国产精品高潮在线| 欧美日韩精品久久久久| 国产系列高清精品第一页| 99久久国产主播综合精品| 精品国产一区二区三区免费 | 精品无码人妻一区二区免费蜜桃| 鲸鱼传媒绿头鱼实验室之炮机测评日韩精品一级毛| 777久久精品一区二区三区无码| 欧美大片日韩精品| 久久精品9988| 欧美一卡2卡3卡四卡海外精品| 精品久久久久久国产| 亚洲人成亚洲精品| 999久久久免费国产精品播放| 91亚洲国产成人久久精品网址| 99九九精品免费视频观看| 99久免费精品视频在线观看| 国产精品福利片免费看 | 蜜芽亚洲av无码精品色午夜| 无码精品视频一区二区三区 | 精品少妇一区二区三区在线| 国产成人精品免费视频网页大全|