每一次重裝系統(tǒng)或者是需要在服務器上正確運行軟件,我們都需要重新安裝所有的package、dependency并進行相應配置的微調。而這一過程可能就會因為疏忽導致錯誤,因此需要自動化部署
持續(xù)整合,持續(xù)交付(CI/CD)的實踐,我們能夠周期性的對產品進行各種專業(yè)測試,如果出現問題我們也能快速找到發(fā)生問題的最近位置。同時我們還能進行報表分析和自動通知等其他操作
Ansible
ansible就是這樣一款主流的自動化部署工具,要通過ansible在被控節(jié)點(managed node)上配置環(huán)境,我們需要安裝Pyhton然后通過SSH連線。
安裝過程
Ansible當中,所有機器分為以下兩類:
- 控制主機(Control Machine): 這類主機能通過Ansible的playbook(劇本)對被控節(jié)點進行部署
- 被控節(jié)點(Managed Machine):又稱Remote Node,這類節(jié)點就是我們通過Ansible進行部署的對象
值得注意的是,Ansible并不用安裝在被控主機上,只需要保證能通過SSH與Control Machine溝通就可以了
playbook
我們使用playbook,這一由YAML編寫的程序,來告訴Ansible需要做什么。
---
- hosts: server
tasks:
# task 1
- name: test connection
ping:
register: message
# task 2
- name: print debug message
debug:
msg: "{{ message }}"
task1中,調用了ansible內置模塊-ping,用于測試控制主機能否與被控節(jié)點連線。如果正常,會回傳“pong”信息,然后我們能通過register將被控主機回傳的消息存貯在message變量中
task2中,利用debug方法將message輸出到終端上
如何運行playbook
ansible-playbook playbook.yml
但是這樣ansible并不會做任何task,因為ansible應該對hosts指定的server來執(zhí)行task。但是我們并沒有告訴ansible哪一臺是server,因此需要一個inventory來讓ansible參考,具體編寫需要先在ansible的config中指定inventory路徑。
但是呢,不同的部署環(huán)境(比如test、development、producting)需要不同的配置細節(jié),因此我們就可以定義多個inventory file,然后通過以下指令來實現部署
$ ansible-playbook -i devl-inventory devl-playbook.yml
$ ansible-playbook -i prod-inventory prod-playbook.yml
當然也可以寫在同一文件中使用[]標識
[test]
127.0.0.1 ansible_port=2222 ansible_user=test_user
[test:vars]
email_receivers=test@gmail.com
[devl]
127.0.0.1 ansible_port=2222 ansible_user=devl_user
[devl:vars]
email_receivers=devl@gmail.com
Ansible Role
我們可以通過自定義的role來使playbook重復使用,以此來是一部分部署資源能被重復使用
Ansible會在下列路徑尋找可執(zhí)行roles:
- 與playbook同一層額roles文件夾
- /etc/ansible/roles
例如
workspace
├── inventory
├── playbook.yml
└── roles
└── pip
└── tasks
└── main.yml
表示pip是第一個role的名稱,然后工作流程定義在tasks/main.yml中
playbook中改為以下內容
---
- hosts: server
roles:
- { role: pip, become: yes }
Jenkins
當前安裝Jenkins的方法有許多,其中一種比較好的是利用docker來進行。因為容器本身比較輕量,資源遠少于啟動虛擬機;而且容器之間資源相互隔離,不存在相互污染。
Jenkins Job
Job(任務)是構建持續(xù)集成流程的基本單元,Job 可以包括多個構建步驟,例如源碼管理、構建、測試和發(fā)布等。文章來源:http://www.zghlxwxcb.cn/news/detail-430019.html
Job 的用途主要包括以下幾個方面:文章來源地址http://www.zghlxwxcb.cn/news/detail-430019.html
- 構建持續(xù)集成流程:通過 Job,可以將代碼拉取、構建、測試和部署等步驟串聯起來,從而構建出一個完整的持續(xù)集成流程。這樣可以實現快速、自動化的構建和部署,提高軟件開發(fā)的效率和質量。
- 自動化測試:Job 中可以包含自動化測試步驟,例如單元測試、集成測試和端到端測試等。自動化測試可以在構建過程中自動運行,從而及早發(fā)現代碼錯誤,減少測試成本和時間。
- 構建報告和通知:Job 運行后,可以生成各種構建報告,例如測試報告、代碼覆蓋率報告和構建日志等。同時,Jenkins 還支持各種通知方式在構建失敗或成功后通知相關人員。
- 構建流水線:多個 Job 可以通過 Jenkins 提供的 Pipeline 功能串聯起來,形成一個完整的構建流水線,實現多個 Job 的協同工作
到了這里,關于CICD中的Jenkins和Ansible解決方案的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!