the default listen_ip. make a loop for more flexibility. Get a listen ip specifically for that host. see if components have listen_ip defined before using ansible_default_ipv4 Make service files look for listen_ip variable. implemented listen_ip variable here too
		
			
				
	
	
		
			45 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			Desktop File
		
	
	
	
	
	
			
		
		
	
	
			45 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			Desktop File
		
	
	
	
	
	
| [Unit]
 | |
| Description=Openstack nova-compute Container
 | |
| After=docker.service
 | |
| Requires=docker.service
 | |
| 
 | |
| [Service]
 | |
| TimeoutStartSec=0
 | |
| Restart=always
 | |
| ExecStartPre=-/usr/bin/docker kill %n
 | |
| ExecStartPre=-/usr/bin/docker rm %n
 | |
| ExecStart=/usr/bin/docker run --name %n \
 | |
|     -e "GLANCE_CONTROLLER_HOST={{ hostvars[groups['glance-controller'][0]]['listen_ip'] | default(hostvars[groups['glance-controller'][0]]['ansible_default_ipv4']['address']) }}" \
 | |
|     -e "KEYSTONE_HOST={{ hostvars[groups['keystone'][0]]['listen_ip'] | default(hostvars[groups['keystone'][0]]['ansible_default_ipv4']['address']) }}" \
 | |
|     -e "MEMCACHED_HOST={{ hostvars[groups['memcached'][0]]['listen_ip'] | default(hostvars[groups['memcached'][0]]['ansible_default_ipv4']['address']) }}" \
 | |
|     -e "MY_IP={{ hostvars[groups['nova-compute'][0]]['listen_ip'] | default(hostvars[groups['nova-compute'][0]]['ansible_default_ipv4']['address']) }}" \
 | |
|     -e "MYSQL_HOST={{ hostvars[groups['databases'][0]]['listen_ip'] | default(hostvars[groups['databases'][0]]['ansible_default_ipv4']['address']) }}" \
 | |
|     -e "MYSQL_ROOT_PASSWORD={{ secrets['MYSQL_ROOT_PASSWORD'] }}" \
 | |
|     -e "NEUTRON_CONTROLLER_HOST={{ hostvars[groups['neutron-controller'][0]]['listen_ip'] | default(hostvars[groups['neutron-controller'][0]]['ansible_default_ipv4']['address']) }}" \
 | |
|     -e "NEUTRON_PASSWORD={{ secrets['NEUTRON_PASSWORD'] }}" \
 | |
|     -e "NEUTRON_USER=neutron" \
 | |
|     -e "NOVA_COMPUTE_USER=nova_compute" \
 | |
|     -e "NOVA_CONTROLLER_HOST={{ hostvars[groups['nova-controller'][0]]['listen_ip'] | default(hostvars[groups['nova-controller'][0]]['ansible_default_ipv4']['address']) }}" \
 | |
|     -e "NOVA_PASSWORD={{ secrets['NOVA_PASSWORD'] }}" \
 | |
|     -e "NOVA_PASSWORD={{ secrets['NOVA_PASSWORD'] }}" \
 | |
|     -e "NOVA_PLACEMENT_PASSWORD={{ secrets['NOVA_PLACEMENT_PASSWORD'] }}" \
 | |
|     -e "NOVA_PLACEMENT_USER=placement" \
 | |
|     -e "NOVA_USER=nova" \
 | |
|     -e "OS_PASSWORD={{ secrets['OS_PASSWORD'] }}" \
 | |
|     -e "PROVIDER_INTERFACE_NAME={{ provider_interface_name }}" \
 | |
|     -e "RABBIT_HOST={{ hostvars[groups['rabbitmq'][0]]['listen_ip'] | default(hostvars[groups['rabbitmq'][0]]['ansible_default_ipv4']['address']) }}" \
 | |
|     -e "RABBIT_PASSWORD={{ secrets['RABBIT_PASSWORD'] }}" \
 | |
|     -e "RABBIT_USER=openstack" \
 | |
|     --add-host=keystone:{{ hostvars[groups['keystone'][0]]['listen_ip'] | default(hostvars[groups['keystone'][0]]['ansible_default_ipv4']['address']) }} \
 | |
|     --add-host=mariadb:{{ hostvars[groups['databases'][0]]['listen_ip'] | default(hostvars[groups['databases'][0]]['ansible_default_ipv4']['address']) }} \
 | |
|     --privileged \
 | |
|     -v /var/run/libvirt/libvirt-sock:/var/run/libvirt/libvirt-sock \
 | |
|     -v /var/lib/nova/instances:/var/lib/nova/instances \
 | |
|     -v /lib/modules:/lib/modules \
 | |
|     -v /etc/machine-id:/etc/machine-id \
 | |
|     --network host \
 | |
|     {{ docker_image }} /etc/run.sh
 | |
| 
 | |
| [Install]
 | |
| WantedBy=multi-user.target
 |