我試圖創建我的自定義角色,通過Ansible安裝nginx。
我定義了這個defaultsmain.yml
。---
defaults:
用戶:nginx
組:nginx
版本。"1.19.2-1"
download_path: "/tmp/nginx-1.19.2-1"
rpm: "/tmp/nginx-1.19.2-1.el7.ngx.x86_64.rpm"
目錄。
日志。/var/log/nginx
配置。/etc/nginx
custom_config。/etc/nginx/conf.d
pid。/var/run
配置。
- name: main
內容。|
上游后端 {
ip_hash。
服務器 localhost:9090;
服務器127.0.0.1:9090。
}
服務器 {
listen 9443 ssl;
ssl_certificate /etc/ssl/certs/cert.crt;
ssl_certificate_key /etc/ssl/private/cert.key。
位置 / {
proxy_pass http://backend。
}
}
server:
port:
listen:
- 9443
而這是我的tasks/main.yml
---
- set_fact:
default_vars: "{{defaults }}"
host_vars: "{{ hostvars[ansible_host]['nginx'] | default({}) }}"
install_nginx: true
- set_fact:
combined_vars: "{{ default_vars | combine(host_vars, recursive=True) }}"
- name: 收集軟體包事實
package_facts:
manager: auto
- set_fact:
install_nginx: false
當。"'nginx'在ansible_facts.packages中"
- 名稱:安裝NginX
yum:
name: "{{ combined_vars.rpm }}"
狀態:存在
disable_gpg_check: true
成為:true
當。
- install_nginx
- name: Make sure Ports Open
community.general.seport:
ports: "{{ port.listen }}"
proto: tcp
設定型別: http_port_t
State: present
loop_control:
loop_var: "port"
當。'port.listen被定義'時
with_items: "{{ combined_vars.config.server }}}"
成為: true
ignore_errors: true
現在我收到了錯誤資訊:
nginx: [emerg] bind() to 0.0.0.0:9443 failed (13: Permission denied)
當我試圖啟動nginx時,這是因為我的playbook跳過了Make sure Ports Open部分,在那里我設定了打開9443埠(從配置中讀取),如果你不添加這個埠,nginx不會在非默認埠啟動(這是作業系統上運行的允許9443埠的命令。semanage port -a -t http_port_t -p tcp 9443)
這是我的日志的一部分:
這是我的日志的一部分。
ok。[10.x.x.8] => {
"ansible_facts"。{
"combined_vars": {
"config": [
{
"內容": "上游后端 {
ip_hash;
服務器 10.x.x.:9090;
服務器10.x.x.10:9090。
}
服務器 {
listen 9443 ssl;
ssl_certificate /etc/ssl/certs/cert.crt;
ssl_certificate_key /etc/ssl/private/cert.key。
位置 / {
proxy_pass http://backend。
}
}
",
"name": "主"
}
],
"directories": {
"config": "/etc/nginx",
"custom_config": "/etc/nginx/conf.d"。
"日志"。"/var/log/nginx"。
"pid": "/var/run"
},
"download_path": "/tmp/nginx-1.19.2-1",
"group": "nginx"。
"rpm": "/tmp/nginx-1.19.2-1.el7.ngx.x86_64.rpm",
"服務器"。{
"埠": {
"listen": [
9443
]
}
},
"用戶"。"nginx"。
"版本"。"1.19.2-1"
}
},
"改變": false
}
...
fatal: [10.x.x.8]: FAILED! => {
"msg": "該任務包括一個帶有未定義變數的選項。錯誤是:'port'是未定義的
錯誤似乎發生在'/opt/Developments/GitLab/harrisburg-infrastructure/roles/nginx/tasks/main.yml':第95行第3列,但也可能是檔案的其他地方,這取決于
在檔案的其他地方,這取決于確切的語法問題。
違規的那一行似乎是。
- 名稱:確保 Ports Open Mod
^這里
"
}
uj5u.com熱心網友回復:
我是這樣解決的:
tasks/main.yml
- name: Make sure Ports Open Mod
community.general.seport:
ports: "{{ combined_vars.server.port.listen }}"
proto: tcp
設定型別:http_port_t
state: present
loop_control:
loop_var: "listen"
當。'combined_vars.server.port.listen被定義'。
with_items: "{{ combined_vars.server }}}"
成為:true
ignore_errors: true
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/329626.html
標籤:
上一篇:啟用_如果問題
