I am trying to set up the cloud execution module, and every time I try to bring up a test instance with "salt-cloud -p ec2_east_nano_prod saltcloud_nano_test", I get an error:
[DEBUG ] Reading configuration from /etc/salt/cloud
[DEBUG ] Reading configuration from /etc/salt/master
[DEBUG ] Missing configuration file: /etc/salt/cloud.providers
[DEBUG ] Including configuration from '/etc/salt/cloud.providers.d/abc.conf'
[DEBUG ] Reading configuration from /etc/salt/cloud.providers.d/abc.conf
[INFO ] There's at least one cloud driver under the '-east-2-public' cloud provider alias which does not have the required 'driver' setting. Removing it from the available providers listing.
[DEBUG ] Missing configuration file: /etc/salt/cloud.profiles
[DEBUG ] Including configuration from '/etc/salt/cloud.profiles.d/ec2_us_west-2.conf'
[DEBUG ] Reading configuration from /etc/salt/cloud.profiles.d/ec2_us_west-2.conf
[DEBUG ] Configuration file path: /etc/salt/cloud
[WARNING ] Insecure logging configuration detected! Sensitive data may be logged.
[INFO ] salt-cloud starting
[DEBUG ] Could not LazyLoad parallels.avail_sizes: 'parallels' __virtual__ returned False
[DEBUG ] LazyLoaded parallels.avail_locations
[DEBUG ] LazyLoaded proxmox.avail_sizes
[DEBUG ] Could not LazyLoad saltify.destroy: 'saltify.destroy' is not available.
[DEBUG ] Could not LazyLoad saltify.avail_sizes: 'saltify.avail_sizes' is not available.
[DEBUG ] Could not LazyLoad saltify.avail_images: 'saltify.avail_images' is not available.
[DEBUG ] Could not LazyLoad saltify.avail_locations: 'saltify.avail_locations' is not available.
[DEBUG ] Could not LazyLoad rackspace.reboot: 'rackspace.reboot' is not available.
[DEBUG ] LazyLoaded openstack.list_locations
[DEBUG ] Could not LazyLoad rackspace.list_locations: 'rackspace.list_locations' is not available.
[ERROR ] Profile ec2 is not defined
[DEBUG ] LazyLoaded nested.output
Error:
Profile ec2 is not defined
Setup
/etc/salt/cloud.profiles.d/ec2_us_west-2.conf
ec2:
provider: ec2-us-east-2-public
image: ami-41e7cb24
size: t2.micro
ssh_username: ubuntu
tag: {'Environment': 'production'}
sync_after_install: grains
minion:
master: 172.31.17.185
Here is the provider.d file:
ec2-us-east-2-public:
minion:
master: master
id: '**********'
key: '******+******'
private_key: /etc/salt/***.pem
keyname: ***
ssh_interface: public_ips
securitygroup: default
location: us-west-2
availability_zone: us-west-2a
provider: ec2
del_root_vol_on_destroy: True
del_all_vols_on_destroy: True
rename_on_destroy: True
Versions Report
Salt Version:
Salt: 2017.7.4
Dependency Versions:
cffi: Not Installed
cherrypy: Not Installed
dateutil: 2.4.2
docker-py: Not Installed
gitdb: 0.6.4
gitpython: 1.0.1
ioflo: Not Installed
Jinja2: 2.8
libgit2: Not Installed
libnacl: Not Installed
M2Crypto: Not Installed
Mako: 1.0.3
msgpack-pure: Not Installed
msgpack-python: 0.4.6
mysql-python: Not Installed
pycparser: Not Installed
pycrypto: 2.6.1
pycryptodome: Not Installed
pygit2: Not Installed
Python: 2.7.12 (default, Dec 4 2017, 14:50:18)
python-gnupg: Not Installed
PyYAML: 3.11
PyZMQ: 15.2.0
RAET: Not Installed
smmap: 0.9.0
timelib: Not Installed
Tornado: 4.2.1
ZMQ: 4.1.4
System Versions:
dist: Ubuntu 16.04 xenial
locale: UTF-8
machine: x86_64
release: 4.4.0-1038-aws
system: Linux
version: Ubuntu 16.04 xenial
I am not sure if I need to define "provider: pillar['cloud'][etc]".
In your provider.d
file, try using "driver" instead of "provider", similar to the salt-cloud quick start.
This page notes that this field was changed some years ago.
Changed in version 2015.8.0.
The provider parameter in cloud provider definitions was renamed to driver. This change was made to avoid confusion with the provider parameter that is used in cloud profile definitions. Cloud provider definitions now use driver to refer to the Salt cloud module that provides the underlying functionality to connect to a cloud host, while cloud profiles continue to use provider to refer to provider configurations that you define.