日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

利用ansible 自动发布安装

發(fā)布時間:2025/3/21 编程问答 16 豆豆
生活随笔 收集整理的這篇文章主要介紹了 利用ansible 自动发布安装 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
使用本腳本可以自動批量完成中間節(jié)點環(huán)境的部署工作,包括:Nginx編譯安裝、添加程序管理腳本、設(shè)置開機啟動、反向代理配置、證書分發(fā)、添加iptables規(guī)則等。腳本支持自定義nginx安裝版本、設(shè)置編譯模塊、配置監(jiān)聽端口等。 1. Nginx Role規(guī)則說明 本腳本用于中間節(jié)點(Nginx反向代理)環(huán)境的自動化配置,主要內(nèi)容包括: 安裝基礎(chǔ)依賴環(huán)境; 創(chuàng)建nginx啟動用戶(支持自定義用戶); 下載nginx安裝文件(可自定義nginx版本); 解壓安裝文件; 執(zhí)行編譯安裝(可自定義編譯參數(shù)和模塊); 添加管理腳本,用于nginx服務(wù)的啟動和關(guān)閉; 設(shè)置開機啟動; 分發(fā)https證書文件; 反向代理配置; 添加iptables規(guī)則,允許訪問nginx代理服務(wù)。 2. Nginx Role規(guī)則基本說明 2.1 目錄結(jié)構(gòu)說明 Nginx Role目錄結(jié)構(gòu)介紹: nginx # Nginx Role腳本根目錄 ├── defaults # 腳本默認變量目錄 │ └── main.yml # 腳本默認變量文件 ├── files # 文件目錄 │ ├── https_cert # 文件目錄,用于存放https證書文件 │ └── nginx_start_scripts # nginx啟動腳本 ├── handlers # 任務(wù)處理器 │ └── main.yml # 定義了 nginx reload和iptables restarted兩個處理器任務(wù) ├── tasks # 任務(wù)目錄 │ └── main.yml # ansible任務(wù)文件,定義了需要執(zhí)行的自動化任務(wù) ├── templates #模板目錄 │ ├── nginx_config_file.j2 # nginx配置模板,使用了jinja2模版語言進行預(yù)定義,可通過變量傳遞配自定義置內(nèi)容 │ └── nginx_install.j2 # nginx編譯安裝執(zhí)行腳本 ├── tests # 腳本使用的測試用例,腳本執(zhí)行案例 │ ├── inventory # 腳本執(zhí)行使用的主機清單 │ └── test.yml # 腳本執(zhí)行調(diào)用的playbook劇本 └── vars # 腳本變量目錄└── main.yml # 腳本變量文件2.2 腳本變量說明 默認變量(nginx/defaults/main.yml) 變量名 默認值 說明 nginx_install true nginx編譯安裝 nginx_start_scripts true 分發(fā)nginx啟動腳本 nginx_start_service true 啟動nginx服務(wù) nginx_start_on_boot true 設(shè)置開機啟動 nginx_copy_https_cert false 分發(fā)https證書文件 nginx_revproxy_config false 設(shè)置反向代理配置 add_iptables_for_nginx false 添加iptables防火墻規(guī)則 通過默認變量可以控制腳本執(zhí)行的內(nèi)容,在使用本腳本前最好是執(zhí)行下common腳本,先進行系統(tǒng)的初始優(yōu)化工作。 腳本變量(nginx/vars/main.yml) --- nginx_user: nginx # nginx啟動用戶 nginx_group: nginx # nginx組 nginx_version: 1.15.8 # 要安裝的nginx版本 download_url: http://nginx.org/download # nginx文件下載地址 download_dir: /usr/local/src # nginx文件下載存放目錄 install_dir: /usr/local/nginx # nginx安裝目錄model_config: # nginx編譯安裝參數(shù)- "--user={{ nginx_user }}"- "--group={{ nginx_group }}"- "--prefix={{ install_dir }}"- "--with-http_realip_module"- "--with-http_sub_module"- "--with-http_gzip_static_module"- "--with-http_stub_status_module"- "--with-http_ssl_module"- "--with-pcre"可以通過修改nginx_version來修改需要安裝的版本,但需要確認下載地址download_url中存在對應(yīng)版本,并可以下載。 2.3 nginx反向代理配置模版說明 nginx反向代理配置模版(nginx/templates/nginx_config_file.j2) user {{ nginx_user }}; worker_processes {{ ansible_processor_vcpus }}; events {worker_connections 102400; }http {include mime.types;default_type application/octet-stream;log_format main '$remote_addr $http_X_Forwarded_For [$time_local] ' '$upstream_addr $upstream_response_time ' '$http_host $request ' '"$status" $body_bytes_sent "$http_referer" ' '"$http_accept_language" "$http_user_agent" '; sendfile on;tcp_nopush on; tcp_nodelay on;server_tokens off;keepalive_timeout 65;{% for item in nginx_revproxy_sites %} # 對nginx_revproxy_sites配置變量進行循環(huán){% if item.host == ansible_host %} # 判斷host是否等于當(dāng)前執(zhí)行任務(wù)的主機地址,如果相等繼續(xù)執(zhí)行后面操作upstream {{ item.desc }}_backend { # 使用desc變量內(nèi)容加上_backend作為upstream名稱{% for upstream in item.upstreams %} # 遍歷upstreamsserver {{ upstream.address }}:{{ upstream.port }}; # 將遍歷結(jié)果作為upstream模塊集群轉(zhuǎn)發(fā)地址(反向代理的回源請求地址,upstream支持多節(jié)點的集群負載){% endfor %}} server {listen {{ item.listen_port | default(80) }}; # 配置http監(jiān)聽端口,如果沒有定義listen_port默認使用80端口server_name {{ item.domains | join(" ") }}; 配置訪問域名,支持多域名設(shè)置access_log logs/access.log main;{% if item.ssl_status %} # 判斷ssl_status狀態(tài),如果狀態(tài)為true,則將http請求跳轉(zhuǎn)到https(跳轉(zhuǎn)會加上listen_ssl_port和請求鏈接)return 301 https://$server_name:{{ item.listen_ssl_port | default(443) }}$request_uri;{% else %} # 如果ssl_status狀態(tài)為false,則使用http代理將請求轉(zhuǎn)發(fā)到上面定義的upstream集群location / {proxy_pass http://{{ item.desc }}_backend; }{% endif %}}{% if item.ssl_status %} # ssl_status狀態(tài)為true是進行https反向代理配置和域名證書配置server {listen {{ item.listen_ssl_port | default(443) }} ssl;server_name {{ item.domains | join(" ") }};ssl_certificate {{ item.ssl_crt }};ssl_certificate_key {{ item.ssl_key }};ssl_session_timeout 50m;ssl_protocols TLSv1.2;ssl_ciphers AESGCM:ALL:!DH:!EXPORT:!RC4:+HIGH:!MEDIUM:!LOW:!aNULL:!eNULL;ssl_prefer_server_ciphers on;access_log logs/access.log main;location / {proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_request_buffering off;proxy_ignore_client_abort on;proxy_pass https://{{ item.desc }}_backend; }}{% endif %}{% endif %} {% endfor %} }反向代理模版配置說明: 配置模版使用了Jinja2模版語言使用自定義變量來動態(tài)進行配置文件的渲染; user {{ nginx_user }}:使用自定義的用戶作為nginx啟動用戶; worker_processes {{ ansible_processor_vcpus }}:獲取cup核數(shù),設(shè)置worker_processes; 其他說明詳見模版中注釋內(nèi)容。 3 Nginx role腳本使用說明 在腳本中已經(jīng)創(chuàng)建了一個簡單的使用案例(nginx/tests/)可以作為參考,同時前面已經(jīng)介紹了默認變量和腳本變量,在腳本使用過程中可以去自定義這些變量內(nèi)容。 使用腳本前先將腳本目錄(nginx)拷貝到/etc/ansible/roles目錄下 3.1 基本功能使用 通過以下事例可以完成nginx的編譯安裝和開機啟動配置: 1) 新建一個主機清單文件(nginx/tests/inventory): [proxy_server] 192.168.0.100 192.168.0.101這里默認已經(jīng)使用common腳本進行了系統(tǒng)的初始化配置,可以通過密鑰來登陸主機清單中的主機。如果清單中主機沒有配置密鑰登陸,在定義清單時需要制定遠程登陸用戶和密碼: [proxy_server] 192.168.0.100 ansible_ssh_user=root ansible_ssh_pass=CPBal1Tid 192.168.0.101 ansible_ssh_user=root ansible_ssh_pass=KJadfiola新建執(zhí)行腳本用的playbook劇本(nginx/tests/nginx_site.yml) --- - hosts: proxy_serverremote_user: rootroles:- nginx3) 執(zhí)行腳本 cd /etc/ansible/roles/nginx/tests/ ansible-playbook nginx_site.yml -i inventory腳本成功執(zhí)行完成后,ansible會在inventory清單中的遠程主機編譯安裝nginx,并添加到開機啟動。 4)執(zhí)行結(jié)果驗證 ansible proxy_server -m shell -a "ps -ef |grep nginx" -i inventory 192.168.0.100 | CHANGED | rc=0 >> root 2228 1 0 13:24 ? 00:00:00 nginx: master process /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf nginx 2229 2228 0 13:24 ? 00:00:00 nginx: worker process root 5781 5780 0 13:36 pts/0 00:00:00 /bin/sh -c ps -ef |grep nginx root 5783 5781 0 13:36 pts/0 00:00:00 grep nginx....后面內(nèi)容省略....可以看到遠程主機已經(jīng)成功安裝了nginx并啟動了nginx服務(wù),當(dāng)然你也可以確認下是否分發(fā)了nginx啟動腳本和是否設(shè)置了開機啟動。 3.2 反向代理配置和證書分發(fā) 如果想要在安裝nginx的同時配置反向代理,和分發(fā)證書文件,按照下面步驟進行操作: 1)上傳證書文件 將https證書文件上傳到nginx/files/https_cert目錄。 2)修改nginx/tests/nginx_site.yml文件 --- - hosts: proxy_serverremote_user: rootvars:nginx_copy_https_cert: truenginx_revproxy_config: trueadd_iptables_for_nginx: truenginx_revproxy_sites: # nginx 反向代理配置內(nèi)容,對照《2.3 nginx反向代理配置模版說明》更便于理解 - host: 192.168.0.100 # 反向代理配置對應(yīng)的主機desc: t_server # 反向代理集群備注,nginx配置模版中引用它作為upstream名稱domains: # 域名,用于定義server_name,支持多個域名配置- example.com- www.example.comupstreams: # nginx反向代理集群配置內(nèi)容,可以添加多個節(jié)點,默認采用輪訓(xùn)方式進行請求轉(zhuǎn)發(fā)- { address: 192.168.10.11, port: 80}- { address: 192.168.10.12, port: 8080}listen_port: 80 # http監(jiān)聽端口,如果不設(shè)置,默認使用80端口listen_ssl_port: 443 # https監(jiān)聽端口,如果不設(shè)置,默認使用https端口ssl_status: true # 設(shè)置為true啟用https配置ssl_crt: /etc/ssl/test.com.crt # 證書文件ssl_key: /etc/ssl/test.com.key # 證書文件- host: 192.168.0.101desc: z_serverdomains:- example01.com- wwww.example01.comupstreams:- { address: 192.168.0.21, port: 80}- { address: 192.168.0.22, port: 80}ssl_status: falseroles:- nginx執(zhí)行nginx role的playbook劇本說明: nginx_copy_https_cert:默認變量,用來控制證書文件分發(fā),設(shè)置為true,執(zhí)行證書分發(fā)操作; nginx_revproxy_config:默認變量,用來啟用反向代理配置,設(shè)置為ture,進行模版變量替換和分發(fā); add_iptables_for_nginx:默認變量,用來添加iptables規(guī)則,需要保證系統(tǒng)已安裝iptables-services服務(wù)(common基礎(chǔ)優(yōu)化腳本中已經(jīng)定義安裝過程); nginx_revproxy_sites:nginx反向代理的配置內(nèi)容,詳細說明件上面的備注。配置注意事項: 如果啟用了nginx_copy_https_cert、nginx_revproxy_config、add_iptables_for_nginx這三項配置,必須定義nginx_revproxy_sites; nginx_revproxy_sites中必定義字段有:host、desc、domain、upstreams、ssl_status; host: 用來確定反向代理配置對應(yīng)的主機(該主機必須存在于inventory主機清單中); ssl_status:當(dāng)ssl_status狀態(tài)為true時,需要定義證書文件ssl_crt和ssl_key,其中證書名稱必須和上傳到nginx/files/https_cert目錄中的名稱對應(yīng); listen_port(listen_ssl_port): http(https)監(jiān)聽端口,這兩個選項不是必須定義,如果在playbook中沒有定義,腳本默認會采用80(443)端口,這兩個監(jiān)聽端口不能用同一個端口。 配置文件使用的是yaml格式,在定義文件內(nèi)容時注意縮緊。

?

轉(zhuǎn)載于:https://www.cnblogs.com/jameslove/p/10923927.html

總結(jié)

以上是生活随笔為你收集整理的利用ansible 自动发布安装的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。