로그에 따르면 /tmp/add-cloudflare-ips 단계 실행 실패가 원인인 것으로 보이지만, 해당 스크립트 중 정확히 어떤 명령문이 실패했는지는 찾을 수 없습니다.
Pups::ExecError: /tmp/add-cloudflare-ips failed with return #<Process::Status: pid 4229 exit 8>
Location of failure: /usr/local/lib/ruby/gems/3.2.0/gems/pups-1.2.1/lib/pups/exec_command.rb:132:in `spawn'
exec failed with the params "/tmp/add-cloudflare-ips"
bootstrap failed with exit code 8
app.yml에서 cloudflare 관련 라인을 제거한 후, 리빌드(rebuild)가 완료되면 컨테이너에 진입하여 templates/cloudflare.template.yml의 명령어를 수동으로 단계별로 실행해 보세요. 완료된 후에는 nginx -s reload를 실행하면 됩니다. 제 경험상 네트워크 문제로 인해 wget이 실패했을 가능성이 높습니다.
run:
- file:
path: /tmp/add-cloudflare-ips
chmod: +x
contents: |
#!/bin/bash -e
# Download list of CloudFlare ips
wget -q https://www.cloudflare.com/ips-v4/ -O - > /tmp/cloudflare-ips
echo >> /tmp/cloudflare-ips
wget -q https://www.cloudflare.com/ips-v6/ -O - >> /tmp/cloudflare-ips
# Make into nginx commands and escape for inclusion into sed append command
CONTENTS=$(</tmp/cloudflare-ips sed '/^$/d; s/^.*/set_real_ip_from &;/' | tr '\n' '\\' | sed 's/\\/\\n/g')
echo CloudFlare IPs:
echo $(echo | sed "/^/a $CONTENTS")
# Insert into discourse.conf
sed -i "/sendfile on;/a $CONTENTS\n" /etc/nginx/conf.d/discourse.conf
#sed -i "/sendfile on;/a $CONTENTS\nreal_ip_header CF-Connecting-IP;" /etc/nginx/conf.d/discourse.conf
# Clean up
rm /tmp/cloudflare-ips
- exec: "/tmp/add-cloudflare-ips"
- exec: "rm /tmp/add-cloudflare-ips"