use ifconfig.me to get the public IP regardless of cloud provider

pull/54/head
Joshua Fernandes 6 months ago
parent 9d5087e22d
commit b4d66c5761
  1. 1
      README.md
  2. 1
      defaults/main.yml
  3. 64
      tasks/network.yml

@ -50,7 +50,6 @@ All variables which can be overridden are stored in [defaults/main.yml](defaults
| `besu_systemd_state` | restarted | The default option for the systemd service state | | `besu_systemd_state` | restarted | The default option for the systemd service state |
| `besu_identity` | ___unset___ | Configuration of Identity in the Client ID | | `besu_identity` | ___unset___ | Configuration of Identity in the Client ID |
| `besu_host_ip` | "" | The host IP that Besu uses for the P2P network. This specifies the host on which P2P listens | | `besu_host_ip` | "" | The host IP that Besu uses for the P2P network. This specifies the host on which P2P listens |
| `besu_default_ip` | "{{ default(ansible_host) \| default('127.0.0.1') }}" | The fallback default for `besu_host_ip` |
| `besu_max_peers` | ___unset___ | The maximum number of P2P connections you can establish | | `besu_max_peers` | ___unset___ | The maximum number of P2P connections you can establish |
| `besu_network` | mainnet | The network that this node will join. Other values are 'ropsten', 'rinkeby', 'goerli', 'classic', 'mordor', 'kotti', 'dev' and 'custom' | | `besu_network` | mainnet | The network that this node will join. Other values are 'ropsten', 'rinkeby', 'goerli', 'classic', 'mordor', 'kotti', 'dev' and 'custom' |
| `besu_genesis_path` | ___unset___ | The path to the genesis file, only valid when `besu_network` is `custom` | | `besu_genesis_path` | ___unset___ | The path to the genesis file, only valid when `besu_network` is `custom` |

@ -36,7 +36,6 @@ besu_launchd_dir: /Library/LaunchAgents
# Besu config # Besu config
besu_host_ip: "" besu_host_ip: ""
besu_default_ip: "127.0.0.1"
besu_network: mainnet besu_network: mainnet
besu_sync_mode: FAST besu_sync_mode: FAST
besu_p2p_port: 30303 besu_p2p_port: 30303

@ -1,69 +1,21 @@
--- ---
- name: Get the default ipv4 address - name: Get the default ipv4 address - and set this as the default fallback
set_fact: set_fact:
besu_default_ip: >- besu_host_ip: >-
{{ hostvars[inventory_hostname]['ansible_default_ipv4']['address'] if {{ hostvars[inventory_hostname]['ansible_default_ipv4']['address'] if
hostvars[inventory_hostname]['ansible_default_ipv4']['address'] is hostvars[inventory_hostname]['ansible_default_ipv4']['address'] is
defined else '127.0.0.1' }} defined else '127.0.0.1' }}
besu_aws_public_ip: ""
besu_gcp_public_ip: ""
besu_azure_public_ip: ""
- name: Check if running on AWS - name: Fetch public IP
uri: uri:
url: http://169.254.169.254/latest/meta-data/public-ipv4 url: http://ifconfig.me/ip
method: GET method: GET
return_content: yes return_content: yes
status_code: 200 status_code: 200
register: aws_public_ip_output register: besu_public_ip_output
ignore_errors: True ignore_errors: True
- name: Set the host ip if we are in AWS - name: Set the host ip
set_fact: set_fact:
besu_host_ip: "{{ aws_public_ip_output.content }}" besu_host_ip: "{{ besu_public_ip_output.content }}"
when: aws_public_ip_output.status == 200 when: besu_public_ip_output.status == 200
- name: Check if running on Azure
uri:
url: http://169.254.169.254/metadata/instance/network/interface/0/ipv4/ipAddress/0/publicIpAddress?api-version=2017-08-01&format=text
method: GET
headers:
Metadata: true
return_content: yes
status_code: 200
register: azure_public_ip_output
ignore_errors: True
when: ( aws_public_ip_output.status != 200 )
- name: Set the host ip if we are in Azure
set_fact:
besu_host_ip: "{{ azure_public_ip_output.content }}"
when: ( aws_public_ip_output.status != 200 ) and
( azure_public_ip_output.status == 200 )
- name: Check if running on GCP
uri:
url: http://169.254.169.254/computeMetadata/v1/instance/network-interfaces/0/access-configs/0/external-ip
method: GET
headers:
Metadata-Flavor: Google
return_content: yes
status_code: 200
register: gcp_public_ip_output
ignore_errors: True
when: ( aws_public_ip_output.status != 200 ) and
( azure_public_ip_output.status != 200 )
- name: Set the host ip if we are in GCP
set_fact:
besu_host_ip: "{{ gcp_public_ip_output.content }}"
when: ( aws_public_ip_output.status != 200 ) and
( azure_public_ip_output.status != 200 ) and
( gcp_public_ip_output == 200 )
- name: Fallback to the ansible default ip
set_fact:
besu_host_ip: "{{ besu_default_ip }}"
when: ( aws_public_ip_output.status != 200 ) and
( azure_public_ip_output.status != 200 ) and
( gcp_public_ip_output != 200 )

Loading…
Cancel
Save