Merge remote-tracking branch 'upstream/2015.8' into merge-forward-2016.3

Conflicts:
    README.rst
    doc/conf.py
    doc/ref/index.rst
    doc/ref/proxy/all/salt.proxy.ssh_sample.rst
    doc/topics/installation/rhel.rst
    doc/topics/releases/2015.8.4.rst
    doc/topics/tutorials/states_pt5.rst
    salt/cloud/clouds/ec2.py
    salt/cloud/clouds/opennebula.py
    salt/config/__init__.py
    salt/modules/boto_dynamodb.py
    salt/modules/boto_ec2.py
    salt/modules/boto_elasticache.py
    salt/modules/boto_elb.py
    salt/modules/boto_iam.py
    salt/modules/boto_rds.py
    salt/modules/boto_sns.py
    salt/modules/boto_sqs.py
    salt/modules/dracr.py
    salt/modules/git.py
    salt/modules/mine.py
    salt/modules/systemd.py
    salt/modules/win_pkg.py
    salt/modules/yumpkg.py
    salt/pillar/__init__.py
    salt/states/git.py
    salt/states/rabbitmq_vhost.py
    salt/states/saltmod.py
    salt/utils/pkg/rpm.py
    setup.py
    tests/unit/modules/systemd_test.py
    tests/unit/states/rabbitmq_vhost_test.py
This commit is contained in:
Colton Myers 2016-02-11 22:33:49 -07:00
commit 076b49a4ca
187 changed files with 3157 additions and 1329 deletions

View file

@ -2,67 +2,108 @@
What is SaltStack?
==================
Salt is a new approach to infrastructure management. Easy enough to get
running in minutes, scalable enough to manage tens of thousands of servers,
and fast enough to communicate with them in *seconds*.
SaltStack makes software for complex systems management at scale.
SaltStack is the company that created and maintains the Salt Open
project and develops and sells SaltStack Enterprise software, services
and support. Easy enough to get running in minutes, scalable enough to
manage tens of thousands of servers, and fast enough to communicate with
them in *seconds*.
Salt delivers a dynamic communication bus for infrastructures that can be used
for orchestration, remote execution, configuration management and much more.
Salt is a new approach to infrastructure management built on a dynamic
communication bus. Salt can be used for data-driven orchestration,
remote execution for any infrastructure, configuration management for
any app stack, and much more.
Documentation
=============
Download Salt Open
==================
Salt Open is tested and packaged to run on CentOS, Debian, RHEL, Ubuntu,
Windows. Download Salt Open and get started now.
`<https://repo.saltstack.com/>`_
`Installation Instructions <https://docs.saltstack.com/en/latest/topics/installation/index.html>`_
SaltStack Documentation
=======================
Installation instructions, getting started guides, and in-depth API
documentation.
http://docs.saltstack.com
`<https://docs.saltstack.com/en/getstarted/>`_
IRC Chat
========
`<https://docs.saltstack.com/en/latest/>`_
Join the vibrant, helpful and positive SaltStack chat room in Freenode at
#salt. There is no need to introduce yourself, or ask permission to join in,
just help and be helped! Make sure to wait for an answer, sometimes it may take
a few moments for someone to reply.
Get SaltStack Support and Help
==============================
http://webchat.freenode.net/?channels=salt&uio=Mj10cnVlJjk9dHJ1ZSYxMD10cnVl83
**IRC Chat** - Join the vibrant, helpful and positive SaltStack chat room in
Freenode at #salt. There is no need to introduce yourself, or ask permission to
join in, just help and be helped! Make sure to wait for an answer, sometimes it
may take a few moments for someone to reply.
Salt Air
========
`<http://webchat.freenode.net/?channels=salt&uio=Mj10cnVlJjk9dHJ1ZSYxMD10cnVl83>`_
The SaltStack YouTube channel is filled with Salt videos and presentations.
Watch the latest Salt Air episodes for updates from Thomas on development,
catch tutorials, and stay on the cutting edge of Salt.
**Mailing List** - The SaltStack community users mailing list is hosted by
Google groups. Anyone can post to ask questions about SaltStack products and
anyone can help answer. Join the conversation!
http://www.youtube.com/user/saltstack
Mailing List
============
The SaltStack community users mailing list is hosted by Google groups. Anyone
can post to ask questions about SaltStack products and anyone can help answer.
Join the conversation!
https://groups.google.com/forum/#!forum/salt-users
`<https://groups.google.com/forum/#!forum/salt-users>`_
You may subscribe to the list without a Google account by emailing
salt-users+subscribe@googlegroups.com and you may post to the list by emailing
salt-users@googlegroups.com
**Reporting Issues** - To report an issue with Salt, please follow the
guidelines for filing bug reports:
`<https://docs.saltstack.com/en/develop/topics/development/reporting_bugs.html>`_
**SaltStack Support** - If you need dedicated, prioritized support, please
consider a SaltStack Support package that fits your needs:
`<http://www.saltstack.com/support>`_
Engage SaltStack
================
`SaltConf`_, **User Groups and Meetups** - SaltStack has a vibrant and `global
community`_ of customers, users, developers and enthusiasts. Connect with other
Salted folks in your area of the world, or join `SaltConf16`_, the SaltStack
annual user conference, April 19-21 in Salt Lake City. Please let us know if
you would like to start a user group or if we should add your existing
SaltStack user group to this list by emailing: info@saltstack.com
**SaltStack Training** - Get access to proprietary `SaltStack education
offerings`_ through instructor-led training offered on-site, virtually or at
SaltStack headquarters in Salt Lake City. SaltStack Enterprise training helps
increase the value and effectiveness of SaltStack software for any customer and
is a prerequisite for coveted `SaltStack Certified Engineer (SSCE)`_ status.
SaltStack training is also available through several `SaltStack professional
services`_ offerings.
**Follow SaltStack on -**
* YouTube - `<http://www.youtube.com/saltstack>`_
* Twitter - `<http://www.twitter.com/saltstack>`_
* Facebook - `<https://www.facebook.com/SaltStack/>`_
* LinkedIn - `<https://www.linkedin.com/company/salt-stack-inc>`_
* LinkedIn Group - `<https://www.linkedin.com/groups/4877160>`_
* Google+ - `<https://plus.google.com/b/112856352920437801867/+SaltStackInc/posts>`_
.. _SaltConf: http://www.youtube.com/user/saltstack
.. _global community: http://www.meetup.com/pro/saltstack/
.. _SaltConf16: http://saltconf.com/
.. _SaltStack education offerings: http://saltstack.com/training/
.. _SaltStack Certified Engineer (SSCE): http://saltstack.com/certification/
.. _SaltStack professional services: http://saltstack.com/services/
Developing Salt
===============
The Salt development team is welcoming, positive, and dedicated to helping
people get new code and fixes into SaltStack projects. Log into GitHub and get
started with one of the largest developer communities in the world. The following
links should get you started:
The Salt development team is welcoming, positive, and dedicated to
helping people get new code and fixes into SaltStack projects. Log into
GitHub and get started with one of the largest developer communities in
the world. The following links should get you started:
* https://github.com/saltstack
* http://docs.saltstack.com/en/latest/topics/development/index.html
* `<https://github.com/saltstack>`_
* `<https://docs.saltstack.com/en/latest/topics/development/index.html>`_
Reporting Issues
================
To report an issue with Salt, please follow the guidelines for filing bug reports:
* http://docs.saltstack.com/en/develop/topics/development/reporting_bugs.html

View file

@ -44,7 +44,7 @@
#log_level_logfile: info
# The date and time format used in log messages. Allowed date/time formating
# The date and time format used in log messages. Allowed date/time formatting
# can be seen here:
#
# http://docs.python.org/library/time.html#time.strftime

View file

@ -621,6 +621,43 @@
# Recursively merge lists by aggregating them instead of replacing them.
#pillar_merge_lists: False
# A master can cache pillars locally to bypass the expense of having to render them
# for each minion on every request. This feature should only be enabled in cases
# where pillar rendering time is known to be unsatisfactory and any attendent security
# concerns about storing pillars in a master cache have been addressed.
#
# When enabling this feature, be certain to read through the additional pillar_cache_*
# configuration options to fully understand the tuneable parameters and their implications.
#
#pillar_cache: False
# If and only if a master has set `pillar_cache: True`, the cache TTL controls the amount
# of time, in seconds, before the cache is considered invalid by a master and a fresh
# pillar is recompiled and stored.
#
# pillar_cache_ttl: 3600
# If an only if a master has set `pillar_cache: True`, one of several storage providers
# can be utililzed.
#
# `disk`: The default storage backend. This caches rendered pillars to the master cache.
# Rendered pillars are serialized and deserialized as msgpack structures for speed.
# Note that pillars are stored UNENCRYPTED. Ensure that the master cache
# has permissions set appropriately. (Sane defaults are provided.)
#
#`memory`: [EXPERIMENTAL] An optional backend for pillar caches which uses a pure-Python
# in-memory data structure for maximal performance. There are several cavaets,
# however. First, because each master worker contains its own in-memory cache,
# there is no guarantee of cache consistency between minion requests. This
# works best in situations where the pillar rarely if ever changes. Secondly,
# and perhaps more importantly, this means that unencrypted pillars will
# be accessible to any process which can examine the memory of the salt-master!
# This may represent a substantial security risk.
#
#pillar_cache_backend: disk
##### Syndic settings #####
##########################################
@ -738,7 +775,7 @@
# If using 'log_granular_levels' this must be set to the highest desired level.
#log_level_logfile: warning
# The date and time format used in log messages. Allowed date/time formating
# The date and time format used in log messages. Allowed date/time formatting
# can be seen here: http://docs.python.org/library/time.html#time.strftime
#log_datefmt: '%H:%M:%S'
#log_datefmt_logfile: '%Y-%m-%d %H:%M:%S'
@ -774,11 +811,18 @@
##### Node Groups ######
##########################################
# Node groups allow for logical groupings of minion nodes. A group consists of a group
# name and a compound target.
# Node groups allow for logical groupings of minion nodes. A group consists of
# a group name and a compound target. Nodgroups can reference other nodegroups
# with 'N@' classifier. Ensure that you do not have circular references.
#
#nodegroups:
# group1: 'L@foo.domain.com,bar.domain.com,baz.domain.com and bl*.domain.com'
# group1: 'L@foo.domain.com,bar.domain.com,baz.domain.com or bl*.domain.com'
# group2: 'G@os:Debian and foo.domain.com'
# group3: 'G@os:Debian and N@group1'
# group4:
# - 'G@foo:bar'
# - 'or'
# - 'G@foo:baz'
##### Range Cluster settings #####

View file

@ -548,7 +548,7 @@
# Default: 'warning'
#log_level_logfile:
# The date and time format used in log messages. Allowed date/time formating
# The date and time format used in log messages. Allowed date/time formatting
# can be seen here: http://docs.python.org/library/time.html#time.strftime
#log_datefmt: '%H:%M:%S'
#log_datefmt_logfile: '%Y-%m-%d %H:%M:%S'

View file

@ -510,7 +510,7 @@
# Default: 'warning'
#log_level_logfile:
# The date and time format used in log messages. Allowed date/time formating
# The date and time format used in log messages. Allowed date/time formatting
# can be seen here: http://docs.python.org/library/time.html#time.strftime
#log_datefmt: '%H:%M:%S'
#log_datefmt_logfile: '%Y-%m-%d %H:%M:%S'

View file

@ -167,7 +167,7 @@ project = 'Salt'
copyright = '2016 SaltStack, Inc.'
version = salt.version.__version__
latest_release = '2015.8.4' # latest release
latest_release = '2015.8.5' # latest release
previous_release = '2015.5.9' # latest release from previous branch
previous_release_dir = '2015.5' # path on web server for previous branch
build_type = 'develop' # latest, previous, develop

View file

@ -2679,6 +2679,10 @@ A group consists of a group name and a compound target.
group1: 'L@foo.domain.com,bar.domain.com,baz.domain.com or bl*.domain.com'
group2: 'G@os:Debian and foo.domain.com'
group3: 'G@os:Debian and N@group1'
group4:
- 'G@foo:bar'
- 'or'
- 'G@foo:baz'
More information on using nodegroups can be found :ref:`here <targeting-nodegroups>`.

View file

@ -0,0 +1,24 @@
.. _all-salt.grains:
===================================
Full list of builtin grains modules
===================================
.. currentmodule:: salt.grains
.. autosummary::
:toctree:
:template: autosummary.rst.tmpl
chronos
core
disks
esxi
extra
fx2
junos
marathon
mdadm
opts
philips_hue
rest_sample

View file

@ -0,0 +1,6 @@
===================
salt.grains.chronos
===================
.. automodule:: salt.grains.chronos
:members:

View file

@ -0,0 +1,6 @@
================
salt.grains.core
================
.. automodule:: salt.grains.core
:members:

View file

@ -0,0 +1,6 @@
=================
salt.grains.disks
=================
.. automodule:: salt.grains.disks
:members:

View file

@ -0,0 +1,6 @@
================
salt.grains.esxi
================
.. automodule:: salt.grains.esxi
:members:

View file

@ -0,0 +1,6 @@
=================
salt.grains.extra
=================
.. automodule:: salt.grains.extra
:members:

View file

@ -0,0 +1,6 @@
===============
salt.grains.fx2
===============
.. automodule:: salt.grains.fx2
:members:

View file

@ -0,0 +1,6 @@
=================
salt.grains.junos
=================
.. automodule:: salt.grains.junos
:members:

View file

@ -0,0 +1,6 @@
====================
salt.grains.marathon
====================
.. automodule:: salt.grains.marathon
:members:

View file

@ -0,0 +1,6 @@
=================
salt.grains.mdadm
=================
.. automodule:: salt.grains.mdadm
:members:

View file

@ -0,0 +1,6 @@
================
salt.grains.opts
================
.. automodule:: salt.grains.opts
:members:

View file

@ -0,0 +1,6 @@
=======================
salt.grains.philips_hue
=======================
.. automodule:: salt.grains.philips_hue
:members:

View file

@ -0,0 +1,6 @@
=======================
salt.grains.rest_sample
=======================
.. automodule:: salt.grains.rest_sample
:members:

View file

@ -12,6 +12,7 @@ This section contains a list of the Python modules that are used to extend the v
../ref/beacons/all/index
../ref/engines/all/index
../ref/file_server/all/index
../ref/grains/all/index
../ref/modules/all/index
../ref/netapi/all/index
../ref/output/all/index

View file

@ -3,4 +3,4 @@ salt.proxy.esxi
===============
.. automodule:: salt.proxy.esxi
:members:
:members:

View file

@ -3,4 +3,4 @@ salt.proxy.fx2
==============
.. automodule:: salt.proxy.fx2
:members:
:members:

View file

@ -1,5 +1,6 @@
salt.proxy.junos module
=======================
================
salt.proxy.junos
================
.. automodule:: salt.proxy.junos
:members:

View file

@ -1,5 +1,6 @@
salt.proxy.rest_sample module
=============================
======================
salt.proxy.rest_sample
======================
.. automodule:: salt.proxy.rest_sample
:members:

View file

@ -1,5 +1,6 @@
salt.proxy.ssh_sample module
============================
=====================
salt.proxy.ssh_sample
=====================
.. automodule:: salt.proxy.ssh_sample
:members:

View file

@ -78,7 +78,7 @@ the json, yaml, or pprint outputters:
.. _state-layers-sls:
SLS
====
===
Above "High Data", the logical layers are no longer technically required to be
executed, or to be executed in a hierarchy. This means that how the High data
@ -122,13 +122,13 @@ To execute the High State call ``state.highstate``:
salt '*' state.highstate
.. _state-layers-overstate:
.. _state-layers-orchestrate:
OverState
=========
Orchestrate
===========
The overstate layer expresses the highest functional layer of Salt's automated
The orchestrate layer expresses the highest functional layer of Salt's automated
logic systems. The Overstate allows for stateful and functional orchestration
of routines from the master. The overstate defines in data execution stages
of routines from the master. The orchestrate defines in data execution stages
which minions should execute states, or functions, and in what order using
requisite logic.

View file

@ -1,7 +0,0 @@
================
OverState System
================
.. note::
This documentation has been moved :ref:`here <states-overstate>`.

View file

@ -19,7 +19,7 @@ In an issue report, please include the following information:
* Any steps taken to attempt to remediate the problem.
* Any configuration options set in a configuration file that may be relevent.
* Any configuration options set in a configuration file that may be relevant.
* A reproduceable test case. This may be as simple as an SLS file that
illustrates a problem or it may be a link to a repository that contains a

View file

@ -84,58 +84,36 @@ To install using the SaltStack repository:
- ``yum install salt-cloud``
.. note::
EPEL support is not required when installing using the SaltStack repository
on Red Hat 6 and 7. EPEL must be enabled when installing on Red Hat 5.
As of 2015.8.0, EPEL repository is no longer required for installing on
RHEL systems. SaltStack repository provides all needed dependencies.
Post-installation tasks
=======================
.. warning::
If installing on Red Hat Enterprise Linux 7 with disabled (not subscribed on)
'RHEL Server Releases' or 'RHEL Server Optional Channel' repositories,
append CentOS 7 GPG key URL to SaltStack yum repository configuration to
install required base packages:
**Master**
.. code-block:: cfg
To have the Master start automatically at boot time:
.. code-block:: bash
chkconfig salt-master on
To start the Master:
.. code-block:: bash
service salt-master start
**Minion**
To have the Minion start automatically at boot time:
.. code-block:: bash
chkconfig salt-minion on
To start the Minion:
.. code-block:: bash
service salt-minion start
Now go to the :doc:`Configuring Salt</ref/configuration/index>` page.
[saltstack-repo]
name=SaltStack repo for Red Hat Enterprise Linux $releasever
baseurl=https://repo.saltstack.com/yum/redhat/$releasever/$basearch/latest
enabled=1
gpgcheck=1
gpgkey=https://repo.saltstack.com/yum/redhat/$releasever/$basearch/latest/SALTSTACK-GPG-KEY.pub
https://repo.saltstack.com/yum/redhat/$releasever/$basearch/latest/base/RPM-GPG-KEY-CentOS-7
Installation from the Community Repository
==========================================
Beginning with version 0.9.4, Salt has been available in `EPEL`_. For
RHEL/CentOS 5, `Fedora COPR`_ is recommended due to the removal of some
dependencies from EPEL5.
On RHEL/CentOS 6, the proper Jinja package 'python-jinja2' was moved from EPEL
to the "RHEL Server Optional Channel". Verify this repository is enabled before
installing salt on RHEL/CentOS 6.
RHEL/CentOS 5, `Fedora COPR`_ is a single community repository that provides
Salt packages due to the removal from EPEL5.
.. note::
Packages in these repositories are community built, and it can
take a little while until the latest SaltStack release is available
in this repository.
Packages in these repositories are built by community, and it can
take a little while until the latest stable SaltStack release become
available.
.. _`EPEL`: http://fedoraproject.org/wiki/EPEL
.. _`Fedora COPR`: https://copr.fedorainfracloud.org/coprs/saltstack/salt-el5/
@ -144,10 +122,10 @@ RHEL/CentOS 6 and 7, Scientific Linux, etc.
-------------------------------------------
.. warning::
Salt 2015.8 requires ``python-crypto`` 2.6.1 or higher, and ``python-tornado`` version
4.2.1 or higher. These packages are not currently available in EPEL for
Red Hat 5 and 6. You must install these dependencies from another location
or use the SaltStack repository documented above.
Salt 2015.8 is currently not available in EPEL due to unsatisfied
dependencies: ``python-crypto`` 2.6.1 or higher, and ``python-tornado``
version 4.2.1 or higher. These packages are not currently available in EPEL
for Red Hat Enterprise Linux 6 and 7.
Enabling EPEL
*************
@ -165,7 +143,6 @@ Replace ``epel-release-X-Y.rpm`` with the appropriate filename.
.. _RHEL/CentOS 6: http://download.fedoraproject.org/pub/epel/6/i386/repoview/epel-release.html
.. _RHEL/CentOS 7: http://download.fedoraproject.org/pub/epel/7/x86_64/repoview/epel-release.html
Installing Stable Release
*************************
@ -183,9 +160,9 @@ Installing from ``epel-testing``
********************************
When a new Salt release is packaged, it is first admitted into the
``epel-testing`` repository, before being moved to the stable repo.
``epel-testing`` repository, before being moved to the stable EPEL repository.
To install from ``epel-testing``, use the ``enablerepo`` argument for yum:
To install from ``epel-testing``, use the ``enablerepo`` argument for ``yum``:
.. code-block:: bash
@ -195,7 +172,7 @@ Installation Using pip
======================
Since Salt is on `PyPI`_, it can be installed using pip, though most users
prefer to install using RPMs (which can be installed from `EPEL`_).
prefer to install using RPM packages (which can be installed from `EPEL`_).
Installing from pip has a few additional requirements:
@ -215,7 +192,6 @@ Installation from pip:
pip install salt
.. warning::
If installing from pip (or from source using ``setup.py install``), be
advised that the ``yum-utils`` package is needed for Salt to manage
packages. Also, if the Python dependencies are not already installed, then
@ -226,15 +202,15 @@ Installation from pip:
ZeroMQ 4
========
We recommend using ZeroMQ 4 where available. SaltStack provides ZeroMQ 4.0.4
and pyzmq 14.3.1 in the :ref:`SaltStack Repository <installation-rhel-repo>`
as well as a COPR_ repository.
We recommend using ZeroMQ 4 where available. SaltStack provides ZeroMQ 4.0.5
and pyzmq 14.5.0 in the :ref:`SaltStack Repository <installation-rhel-repo>`
as well as a separate `zeromq4 COPR`_ repository.
.. _COPR: http://copr.fedorainfracloud.org/coprs/saltstack/zeromq4/
.. _`zeromq4 COPR`: http://copr.fedorainfracloud.org/coprs/saltstack/zeromq4/
If this repo is added *before* Salt is installed, then installing either
``salt-master`` or ``salt-minion`` will automatically pull in ZeroMQ 4.0.4, and
additional states to upgrade ZeroMQ and pyzmq are unnecessary.
If this repository is added *before* Salt is installed, then installing either
``salt-master`` or ``salt-minion`` will automatically pull in ZeroMQ 4.0.5, and
additional steps to upgrade ZeroMQ and pyzmq are unnecessary.
.. warning:: RHEL/CentOS 5 Users
Using COPR repos on RHEL/CentOS 5 requires that the ``python-hashlib``
@ -242,11 +218,10 @@ additional states to upgrade ZeroMQ and pyzmq are unnecessary.
because YUM will not be able to process the SHA256 checksums used by COPR.
.. note::
For RHEL/CentOS 5 installations, if using the new repository to install
Salt (as detailed :ref:`above <installation-rhel-5>`), then it is not
necessary to enable the zeromq4 COPR, as the new EL5 repository includes
ZeroMQ 4.
For RHEL/CentOS 5 installations, if using the SaltStack repo or Fedora COPR
to install Salt (as described :ref:`above <installation-rhel-repo>`),
then it is not necessary to enable the `zeromq4 COPR`_, because those
repositories already include ZeroMQ 4.
Package Management
==================
@ -263,34 +238,66 @@ dependency.
Post-installation tasks
=======================
**Master**
Master
------
To have the Master start automatically at boot time:
**RHEL/CentOS 5 and 6**
.. code-block:: bash
chkconfig salt-master on
**RHEL/CentOS 7**
.. code-block:: bash
systemctl enable salt-master.service
To start the Master:
**RHEL/CentOS 5 and 6**
.. code-block:: bash
service salt-master start
**Minion**
**RHEL/CentOS 7**
.. code-block:: bash
systemctl start salt-master.service
Minion
------
To have the Minion start automatically at boot time:
**RHEL/CentOS 5 and 6**
.. code-block:: bash
chkconfig salt-minion on
**RHEL/CentOS 7**
.. code-block:: bash
systemctl enable salt-minion.service
To start the Minion:
**RHEL/CentOS 5 and 6**
.. code-block:: bash
service salt-minion start
**RHEL/CentOS 7**
.. code-block:: bash
systemctl start salt-minion.service
Now go to the :doc:`Configuring Salt</ref/configuration/index>` page.

View file

@ -26,7 +26,7 @@ The Orchestrate Runner
The Orchestrate Runner was added with the intent to eventually deprecate the
OverState system, however the OverState will still be maintained until Salt
Boron.
2015.8.0.
The orchestrate runner generalizes the Salt state system to a Salt master
context. Whereas the ``state.sls``, ``state.highstate``, et al functions are

View file

@ -361,6 +361,13 @@ can be created like this:
salt '*' state.highstate pillar='["cheese", "milk", "bread"]'
.. note::
Be aware that when sending sensitive data via pillar on the command-line
that the publication containing that data will be received by all minions
and will not be restricted to the targeted minions. This may represent
a security concern in some cases.
Master Config In Pillar
=======================

View file

@ -466,7 +466,7 @@ Configurable Trunk/Branches/Tags Paths
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Prior to this release, the paths where trunk, branches, and tags were located
could only be in directores named "trunk", "branches", and "tags" directly
could only be in directories named "trunk", "branches", and "tags" directly
under the root of the repository. Three new config parameters
(:conf_master:`svnfs_trunk`, :conf_master:`svnfs_branches`, and
:conf_master:`svnfs_tags`) allow SVN repositories which are laid out

View file

@ -24,13 +24,13 @@ Changes:
- Various fixes to the Windows installation scripts
- Fix issue where the syndic would not correctly propogate loads to the master
- Fix issue where the syndic would not correctly propagate loads to the master
job cache.
- Improve error handling on invalid /etc/network/interfaces file in salt
networking modules
- Fix bug where a reponse status was not checked for in fileclient.get_url
- Fix bug where a response status was not checked for in fileclient.get_url
- Enable eauth when running salt in batch mode

View file

@ -33,13 +33,13 @@ Changes:
- Various fixes to the Windows installation scripts
- Fix issue where the syndic would not correctly propogate loads to the master
- Fix issue where the syndic would not correctly propagate loads to the master
job cache.
- Improve error handling on invalid /etc/network/interfaces file in salt
networking modules
- Fix bug where a reponse status was not checked for in fileclient.get_url
- Fix bug where a response status was not checked for in fileclient.get_url
- Enable eauth when running salt in batch mode

View file

@ -125,7 +125,7 @@ Extended Changelog Courtesy of Todd Stansell (https://github.com/tjstansell/salt
* ebff1ff Merge pull request `#23956`_ from rallytime/`bp-23906`_
* 9d87fd3 add proper marker for format argument
* 197688e Added exception handler to trap the RuntimeError raised when Depends.enforce_dependency() class method fires unsuccessfully. There appears to be no synchronization within the Depends decorator class wrt the class global dependency_dict which results in incomplete population of any loader instantiation occuring at the time of one of these exceptions.
* 197688e Added exception handler to trap the RuntimeError raised when Depends.enforce_dependency() class method fires unsuccessfully. There appears to be no synchronization within the Depends decorator class wrt the class global dependency_dict which results in incomplete population of any loader instantiation occurring at the time of one of these exceptions.
- **PR** `#23955`_: (*rallytime*) Backport `#19305`_ to 2015.5
@ *2015-05-20T03:03:55Z*

View file

@ -84,7 +84,7 @@ Extended Changelog Courtesy of Todd Stansell (https://github.com/tjstansell/salt
@ *2015-06-01T17:45:36Z*
* 02bfb25 Merge pull request `#24281`_ from steverweber/ipmi_docfix
* dd36f2c yaml formating
* dd36f2c yaml formatting
* f6deef3 include api_kg kwarg in ipmi state
@ -874,7 +874,7 @@ Extended Changelog Courtesy of Todd Stansell (https://github.com/tjstansell/salt
**PR** `#24015`_: (*YanChii*) minor improvement of solarisips docs & fix typos
| refs: `#24039`_
* d909781 Merge pull request `#24039`_ from rallytime/`bp-24015`_
* 6bfaa94 minor improovement of solarisips docs & fix typos
* 6bfaa94 minor improvement of solarisips docs & fix typos
**PR** `#24038`_: (*rallytime*) Backport `#19599`_ to 2015.5
@ *2015-05-21T23:43:10Z*
@ -913,7 +913,7 @@ Extended Changelog Courtesy of Todd Stansell (https://github.com/tjstansell/salt
* 1dc67e5 lxc: versionadded
* fcad7cb lxc: states improvments
* fcad7cb lxc: states improvements
* 644bd72 lxc: more consistence for profiles

View file

@ -1112,7 +1112,7 @@ Changes:
- **PR** `#25326`_: (*rallytime*) Back-port `#20972`_ to 2015.5
@ *2015-07-10T18:49:44Z*
- **ISSUE** `#19288`_: (*oba11*) AssociatePublicIpAddress doesnt work with salt-cloud 2014.7.0
- **ISSUE** `#19288`_: (*oba11*) AssociatePublicIpAddress doesn't work with salt-cloud 2014.7.0
| refs: `#20972`_ `#25326`_
- **PR** `#20972`_: (*JohannesEbke*) Fix interface cleanup when using AssociatePublicIpAddress in `#19288`_
| refs: `#25326`_
@ -1304,7 +1304,7 @@ Changes:
- **ISSUE** `#24979`_: (*mavenAtHouzz*) [Discussion] Support for more than 1 netapi.rest_tornado server process
| refs: `#25149`_
- **PR** `#25120`_: (*d--j*) add missing continue for exeption case
- **PR** `#25120`_: (*d--j*) add missing continue for exception case
@ *2015-07-02T19:38:45Z*
- **PR** `#25117`_: (*basepi*) Fix fileclient.is_cached

View file

@ -1110,7 +1110,7 @@ Changes:
- **PR** `#25326`_: (*rallytime*) Back-port `#20972`_ to 2015.5
@ *2015-07-10T18:49:44Z*
- **ISSUE** `#19288`_: (*oba11*) AssociatePublicIpAddress doesnt work with salt-cloud 2014.7.0
- **ISSUE** `#19288`_: (*oba11*) AssociatePublicIpAddress doesn't work with salt-cloud 2014.7.0
| refs: `#20972`_ `#25326`_
- **PR** `#20972`_: (*JohannesEbke*) Fix interface cleanup when using AssociatePublicIpAddress in `#19288`_
| refs: `#25326`_
@ -1302,7 +1302,7 @@ Changes:
- **ISSUE** `#24979`_: (*mavenAtHouzz*) [Discussion] Support for more than 1 netapi.rest_tornado server process
| refs: `#25149`_
- **PR** `#25120`_: (*d--j*) add missing continue for exeption case
- **PR** `#25120`_: (*d--j*) add missing continue for exception case
@ *2015-07-02T19:38:45Z*
- **PR** `#25117`_: (*basepi*) Fix fileclient.is_cached

View file

@ -256,7 +256,7 @@ Changes:
- **PR** `#27050`_: (*twangboy*) Turned multiprocessing on
- **PR** `#27086`_: (*techhat*) Document develoment of SPM loader modules
- **PR** `#27086`_: (*techhat*) Document development of SPM loader modules
- **PR** `#26941`_: (*msteed*) Make elasticsearch work as master job cache

View file

@ -2,6 +2,19 @@
Salt 2015.8.4 Release Notes
===========================
Known Issues
============
``in_`` requisites (:issue:`30820`)
This issue affects all users targeting an explicit ``- name: <name>`` with a ``_in``
requisite (such as ``watch_in`` or ``require_in``). If you are not using explicit ``-
name: <name>`` arguments, are targeting with the state ID instead of the name,
or are not using ``_in`` requisites, then you should be safe to upgrade to
2015.8.4.
This issue is resolved in the :ref:`2015.8.5 <2015.8.5>` release.
Security Fix
============
@ -146,7 +159,7 @@ Changes:
- **PR** `#30349`_: (*rallytime*) Back-port `#30347`_ to 2015.8
- **PR** `#30354`_: (*anlutro*) Make sure all ignore_missing SLSes are catched
- **PR** `#30354`_: (*anlutro*) Make sure all ignore_missing SLSes are caught
- **PR** `#30356`_: (*nmadhok*) Adding code author
@ -308,7 +321,7 @@ Changes:
- **PR** `#30033`_: (*rallytime*) Back-port `#29876`_ to 2015.8
- **PR** `#30029`_: (*terminalmage*) git.latest: Fix handling of nonexistant branches
- **PR** `#30029`_: (*terminalmage*) git.latest: Fix handling of nonexistent branches
- **PR** `#30016`_: (*anlutro*) Properly normalize locales in locale.gen_locale

View file

@ -0,0 +1,49 @@
.. _2015.8.5:
===========================
Salt 2015.8.5 Release Notes
===========================
.. admonition:: About this Release
Salt 2015.8.5 is identical to the 2015.8.4 release with the addition of
a fix for :issue:`30820`, fixed by **PR** `#30833`_. For convenience, the
content from the 2015.8.4 release notes is included below.
.. _`#30833`: https://github.com/saltstack/salt/pull/30833
Known Issue in ``boto_*`` execution modules
===========================================
This release contains an issue that causes the ``boto_*`` execution modules to
display a ``__salt__ not defined`` error (:issue:`30300`). This issue will be
fixed in an upcoming release, but can be manually resolved by completing the
following:
1. Download the ``boto_*`` execution modules that you would like to update from
the 2015.8 branch of Salt. A complete list of affected modules with the
specific changes is available in **PR** `#30867`_.
A simple way to get the updated modules is to `download
<https://github.com/saltstack/salt/archive/2015.8.zip>`_ a zip file of the
2015.8 branch from GitHub. The updated modules are in the ``salt\modules``
directory.
2. Copy the ``boto_*`` modules to the ``\srv\salt\_modules`` directory on your
Salt master.
3. Run the following command to sync these modules to all Salt minions:
.. code-block:: bash
salt '*' saltutil.sync_modules
.. _`#30867`: https://github.com/saltstack/salt/pull/30867/files
--------------------------
**2015.8.4 Release Notes**
.. include:: 2015.8.4.rst
:start-line: 16

View file

@ -150,7 +150,7 @@ Changes to Functions in Git Execution Module
convenience and to match the usage of other functions with ``force``
arguments.
- The ``refspecs`` argument has been added to allow for one or more refspecs to
be provided which overide the one(s) specified by the
be provided which override the one(s) specified by the
**remote.remote_name.fetch** git configuration option.
:py:func:`git.ls_remote <salt.modules.git.ls_remote>`

View file

@ -50,6 +50,12 @@ To match a nodegroup on the CLI, use the ``-N`` command-line option:
salt -N group1 test.ping
.. note::
The ``N@`` classifier cannot be used in compound mathes within the CLI or
:term:`top file`, it is only recognized in the :conf_master:`nodegroups`
master config file parameter.
To match a nodegroup in your :term:`top file`, make sure to put ``- match:
nodegroup`` on the line directly following the nodegroup name.

View file

@ -315,7 +315,7 @@ debugging purposes, SSL verification can be turned off.
CA Bundles
~~~~~~~~~~
The ``requests`` library has its own method of detecting which CA (certficate
The ``requests`` library has its own method of detecting which CA (certificate
authority) bundle file to use. Usually this is implemented by the packager for
the specific operating system distribution that you are using. However,
``urllib2`` requires a little more work under the hood. By default, Salt will

View file

@ -35,7 +35,7 @@ we must configure the minions to back-off appropriately when the Master is
under heavy load.
The fourth is caused by masters with little hardware resources in combination
with a possible bug in ZeroMQ. At least thats what it looks like till today
with a possible bug in ZeroMQ. At least that's what it looks like till today
(`Issue 118651 <https://github.com/saltstack/salt/issues/11865>`_,
`Issue 5948 <https://github.com/saltstack/salt/issues/5948>`_,
`Mail thread <https://groups.google.com/forum/#!searchin/salt-users/lots$20of$20minions/salt-users/WxothArv2Do/t12MigMQDFAJ>`_)
@ -214,6 +214,23 @@ influence the key-size can have.
Downsizing the Salt Master's key is not that important, because the minions
do not encrypt as many messages as the Master does.
In installations with large or with complex pillar files, it is possible
for the master to exhibit poor performance as a result of having to render
many pillar files at once. This exhibit itself in a number of ways, both
as high load on the master and on minions which block on waiting for their
pillar to be delivered to them.
To reduce pillar rendering times, it is possible to cache pillars on the
master. To do this, see the set of master configuration options which
are prefixed with `pillar_cache`.
.. note::
Caching pillars on the master may introduce security considerations.
Be certain to read caveats outlined in the master configuration file
to understand how pillar caching may affect a master's ability to
protect sensitive data!
The Master is disk IO bound
---------------------------

View file

@ -219,7 +219,7 @@ container-by-container basis, for instance using the ``nic_opts`` argument to
.. warning::
The ``ipv4``, ``ipv6``, ``gateway``, and ``link`` (bridge) settings in
network profiles / nic_opts will only work if the container doesnt redefine
network profiles / nic_opts will only work if the container doesn't redefine
the network configuration (for example in
``/etc/sysconfig/network-scripts/ifcfg-<interface_name>`` on RHEL/CentOS,
or ``/etc/network/interfaces`` on Debian/Ubuntu/etc.). Use these with

View file

@ -180,7 +180,13 @@ copy of the repository cache. Command examples are as follows:
Creating a Package Definition SLS File
======================================
The package definition file should look similar to this example for Firefox:
The package definition file is a yaml file that contains all the information
needed to install a piece of software using salt. It defines information about
the package to include version, full name, flags required for the installer and
uninstaller, whether or not to use the windows task scheduler to install the
package, where to find the installation package, etc.
Take a look at this example for Firefox:
.. code-block:: yaml
@ -210,12 +216,48 @@ The package definition file should look similar to this example for Firefox:
uninstaller: '%ProgramFiles(x86)%/Mozilla Firefox/uninstall/helper.exe'
uninstall_flags: '/S'
More examples can be found at https://github.com/saltstack/salt-winrepo-ng
Each software definition file begins with a package name for the software. As in
the example above ``firefox``. The next line is indented two spaces and contains
the version to be defined. As in the example above, a software definition file
can define multiple versions for the same piece of software. The lines following
the version are indented two more spaces and contain all the information needed
to install that package.
The version number and ``full_name`` need to match the output from ``pkg.list_pkgs``
so that the status can be verified when running highstate.
Note: It is still possible to successfully install packages using ``pkg.install``
even if they don't match which can make this hard to troubleshoot.
.. warning:: The package name and the ``full_name`` must be unique to all
other packages in the software repository.
The version line is the version for the package to be installed. It is used when
you need to install a specific version of a piece of software.
.. warning:: The version must be enclosed in quotes, otherwise the yaml parser
will remove trailing zeros.
.. note:: There are unique situations where previous versions are unavailable.
Take Google Chrome for example. There is only one url provided for a standalone
installation of Google Chrome. (https://dl.google.com/edgedl/chrome/install/GoogleChromeStandaloneEnterprise.msi)
When a new version is released, the url just points to the new version. To handle
situations such as these, set the version to `latest`. Salt will install the
version of chrome at the URL and report that version. Here's an example:
.. code-block:: bash
chrome:
latest:
full_name: 'Google Chrome'
installer: 'https://dl.google.com/edgedl/chrome/install/GoogleChromeStandaloneEnterprise.msi'
install_flags: '/qn /norestart'
uninstaller: 'https://dl.google.com/edgedl/chrome/install/GoogleChromeStandaloneEnterprise.msi'
uninstall_flags: '/qn /norestart'
msiexec: True
locale: en_US
reboot: False
Available parameters are as follows:
:param str full_name: The Full Name for the software as shown in "Programs and
Features" in the control panel. You can also get this information by installing
the package manually and then running ``pkg.list_pkgs``. Here's an example of
the output from ``pkg.list_pkgs``:
.. code-block:: bash
@ -241,9 +283,13 @@ even if they don't match which can make this hard to troubleshoot.
Salt Minion 0.16.0:
0.16.0
If any of these preinstalled packages already exist in winrepo the full_name
will be automatically renamed to their package name during the next update
(running highstate or installing another package).
Notice the Full Name for Firefox: Mozilla Firefox 17.0.0 (x86 en-US). That's
exactly what's in the ``full_name`` parameter in the software definition file.
If any of the software insalled on the machine matches one of the software
definition files in the repository the full_name will be automatically renamed
to the package name. The example below shows the ``pkg.list_pkgs`` for a
machine that already has Mozilla Firefox 17.0.1 installed.
.. code-block:: bash
@ -268,15 +314,46 @@ will be automatically renamed to their package name during the next update
nsclient:
0.3.9.328
Add ``msiexec: True`` if using an MSI installer requiring the use of ``msiexec
/i`` to install and ``msiexec /x`` to uninstall.
.. important:: The version number and ``full_name`` need to match the output
from ``pkg.list_pkgs`` so that the status can be verified when running
highstate.
The ``install_flags`` and ``uninstall_flags`` are flags passed to the software
installer to cause it to perform a silent install. These can often be found by
adding ``/?`` or ``/h`` when running the installer from the command line. A
great resource for finding these silent install flags can be found on the WPKG
.. note:: It is still possible to successfully install packages using
``pkg.install`` even if they don't match. This can make troubleshooting
difficult so be careful.
:param str installer: The path to the ``.exe`` or ``.msi`` to use to install the
package. This can be a path or a URL. If it is a URL or a salt path (salt://),
the package will be cached locally and then executed. If it is a path to a file
on disk or a file share, it will be executed directly.
:param str install_flags: Any flags that need to be passed to the installer to
make it perform a silent install. These can often be found by adding ``/?`` or
``/h`` when running the installer from the command line. A great resource for
finding these silent install flags can be found on the WPKG project's wiki_:
Salt will not return if the installer is waiting for user input so these are
important.
:param str uninstaller: The path to the program used to uninstall this software.
This can be the path to the same `exe` or `msi` used to install the software. It
can also be a GUID. You can find this value in the registry under the following
keys:
- Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall
- Software\\Wow6432None\\Microsoft\\Windows\\CurrentVersion\\Uninstall
:param str uninstall_flags: Any flags that need to be passed to the uninstaller
to make it perform a silent uninstall. These can often be found by adding
``/?`` or ``/h`` when running the uninstaller from the command line. A great
resource for finding these silent install flags can be found on the WPKG
project's wiki_:
Salt will not return if the uninstaller is waiting for user input so these are
important.
Here are some examples of installer and uninstaller settings:
.. code-block:: yaml
7zip:
@ -303,9 +380,19 @@ Alternatively the ``uninstaller`` can also simply repeat the URL of the msi file
uninstaller: salt://win/repo/7zip/7z920-x64.msi
uninstall_flags: '/qn /norestart'
Add ``cache_dir: True`` when the installer requires multiple source files. The
directory containing the installer file will be recursively cached on the minion.
Only applies to salt: installer URLs.
:param bool msiexec: This tells salt to use ``msiexec /i`` to install the
package and ``msiexec /x`` to uninstall. This is for `.msi` installations.
:param bool allusers: This parameter is specific to `.msi` installations. It
tells `msiexec` to install the software for all users. The default is True.
:param bool cache_dir: If true, the entire directory where the installer resides
will be recursively cached. This is useful for installers that depend on other
files in the same directory for installation.
.. note:: Only applies to salt: installer URLs.
Here's an example for a software package that has dependent files:
.. code-block:: yaml
@ -317,6 +404,16 @@ Only applies to salt: installer URLs.
install_flags: '/ACTION=install /IACCEPTSQLSERVERLICENSETERMS /Q'
cache_dir: True
:param bool use_scheduler: If true, windows will use the task scheduler to run
the installation. This is useful for running the salt installation itself as
the installation process kills any currently running instances of salt.
:param bool reboot: Not implemented
:param str local: Not implemented
Examples can be found at https://github.com/saltstack/salt-winrepo-ng
.. _standalone-winrepo:

View file

@ -178,13 +178,13 @@ sudo $MAKE install
echo -n -e "\033]0;Build_Evn: OpenSSL\007"
PKGURL="http://openssl.org/source/openssl-1.0.2e.tar.gz"
PKGDIR="openssl-1.0.2e"
PKGURL="http://openssl.org/source/openssl-1.0.2f.tar.gz"
PKGDIR="openssl-1.0.2f"
download $PKGURL
echo "################################################################################"
echo "Building OpenSSL 1.0.2e"
echo "Building OpenSSL 1.0.2f"
echo "################################################################################"
cd $PKGDIR
./Configure darwin64-x86_64-cc --prefix=/opt/salt --openssldir=/opt/salt/openssl
@ -193,49 +193,6 @@ $MAKE test
sudo $MAKE install
############################################################################
# Download and install GDBM
############################################################################
echo -n -e "\033]0;Build_Evn: GDBM\007"
PKGURL="ftp://ftp.gnu.org/gnu/gdbm/gdbm-1.11.tar.gz"
PKGDIR="gdbm-1.11"
download $PKGURL
echo "################################################################################"
echo "Building gdbm 1.11"
echo "################################################################################"
cd $PKGDIR
./configure --prefix=/opt/salt --enable-libgdbm-compat
$MAKE
$MAKE check
sudo $MAKE install
############################################################################
# Download and install Gnu Readline
############################################################################
echo -n -e "\033]0;Build_Evn: Gnu Readline\007"
PKGURL="ftp://ftp.cwru.edu/pub/bash/readline-6.3.tar.gz"
PKGDIR="readline-6.3"
download $PKGURL
curl -O# ftp://ftp.cwru.edu/pub/bash/readline-6.3.tar.gz
echo "################################################################################"
echo "Building GNU Readline 6.3"
echo "################################################################################"
cd $PKGDIR
./configure --prefix=/opt/salt
$MAKE
sudo $MAKE install
############################################################################
# Download and install Python
############################################################################
@ -255,47 +212,13 @@ cd $PKGDIR
./configure --prefix=/opt/salt --enable-shared --enable-toolbox-glue --with-ensurepip=install
$MAKE
# $MAKE test
sudo $MAKE install
sudo -H $MAKE install
############################################################################
# Download and install CMake
# upgrade pip
############################################################################
echo -n -e "\033]0;Build_Evn: CMake\007"
PKGURL="https://cmake.org/files/v3.4/cmake-3.4.1.tar.gz"
PKGDIR="cmake-3.4.1"
download $PKGURL
echo "################################################################################"
echo "Building CMake 3.4.1"
echo "################################################################################"
cd $PKGDIR
./bootstrap
$MAKE
sudo $MAKE install
############################################################################
# Download and install libgit2
############################################################################
echo -n -e "\033]0;Build_Evn: libgit2\007"
PKGURL="https://codeload.github.com/libgit2/libgit2/tar.gz/v0.23.4"
PKGDIR="libgit2-0.23.4"
download $PKGURL
echo "################################################################################"
echo "Building libgit2 0.23.4"
echo "################################################################################"
cd $PKGDIR
mkdir build && cd build
cmake .. -DCMAKE_INSTALL_PREFIX=/opt/salt
sudo cmake --build . --target install
sudo -H /opt/salt/bin/pip install --upgrade pip
############################################################################

View file

@ -72,7 +72,7 @@ fi
echo -n -e "\033]0;Build_Pkg: Clean Staging Area\007"
# Clean folder in the staging area
rm -rf $PKGDIR
rm -rdf $PKGDIR
mkdir -p $PKGDIR
PKGRESOURCES=$SRCDIR/pkg/osx
@ -126,6 +126,19 @@ cp $PKGRESOURCES/scripts/com.saltstack.salt.master.plist $PKGDIR/Library/LaunchD
cp $PKGRESOURCES/scripts/com.saltstack.salt.syndic.plist $PKGDIR/Library/LaunchDaemons
cp $PKGRESOURCES/scripts/com.saltstack.salt.api.plist $PKGDIR/Library/LaunchDaemons
############################################################################
# Remove pkg-config files from the distro
############################################################################
echo -n -e "\033]0;Build_Pkg: Remove pkg-config files\007"
sudo rm -rdf $PKGDIR/opt/salt/bin/pkg-config
sudo rm -rdf $PKGDIR/opt/salt/lib/pkgconfig
sudo rm -rdf $PKGDIR/opt/salt/lib/engines
sudo rm -rdf $PKGDIR/opt/salt/share/aclocal
sudo rm -rdf $PKGDIR/opt/salt/share/doc
sudo rm -rdf $PKGDIR/opt/salt/share/man/man1/pkg-config.1
############################################################################
# Copy Additional Resources from Salt Repo to the Package Directory
############################################################################
@ -138,8 +151,8 @@ cp $PKGRESOURCES/*.rtf $PKGDIR/resources
# I can't get this to work for some reason
mkdir -p $PKGDIR/scripts
cp $PKGRESOURCES/scripts/postflight.sh $PKGDIR/scripts
cp $PKGRESOURCES/scripts/preflight.sh $PKGDIR/scripts
cp $PKGRESOURCES/scripts/postinstall $PKGDIR/scripts
cp $PKGRESOURCES/scripts/preinstall $PKGDIR/scripts
############################################################################
# Copy Config Files from Salt Repo to the Package Directory
@ -152,7 +165,7 @@ cp $SRCDIR/conf/minion $PKGDIR/etc/salt/minion.dist
cp $SRCDIR/conf/master $PKGDIR/etc/salt/master.dist
############################################################################
# I don't know what this does, it doesn't look like the .xml file goes anywhere
# Add Version to distribution.xml
############################################################################
echo -n -e "\033]0;Build_Pkg: Add Version to .xml\007"
@ -170,6 +183,7 @@ sed -i '' $SEDSTR distribution.xml
echo -n -e "\033]0;Build_Pkg: Build Package\007"
pkgbuild --root $PKGDIR \
--scripts $PKGDIR/scripts \
--identifier=com.saltstack.salt \
--version=$VERSION \
--ownership=recommended salt-src-$VERSION.pkg
@ -177,6 +191,5 @@ pkgbuild --root $PKGDIR \
productbuild --resources=$PKGDIR/resources \
--distribution=distribution.xml \
--package-path=salt-src-$VERSION.pkg \
--scripts $PKGDIR/scripts \
--version=$VERSION salt-$VERSION.pkg

View file

@ -1,14 +1,27 @@
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<installer-gui-script minSpecVersion="1">
<installer-gui-script minSpecVersion="2">
<title>Salt @VERSION@</title>
<organization>com.saltstack.salt</organization>
<domains enable_localSystem="true"/>
<options rootVolumeOnly="true" />
<!-- Define minimum system requirements -->
<volume-check>
<allowed-os-versions>
<os-version min="10.11" />
</allowed-os-versions>
</volume-check>
<options rootVolumeOnly="true"
hostArchitectures="x86_64" />
<domains enable_localSystem="true" />
<!-- Define background image -->
<background file="saltstack.png"
mime-type="image/png"
scaling="proportional" />
<!-- Define documents displayed at various steps -->
<background file="saltstack.png" mime-type="image/png" scaling="proportional"/>
<welcome file="welcome.rtf" mime-type="text/rtf" />
<license file="license.rtf" mime-type="text/rtf" />
<conclusion file="conclusion.rtf" mime-type="text/rtf" />
<welcome file="welcome.rtf"
mime-type="text/rtf" />
<license file="license.rtf"
mime-type="text/rtf" />
<conclusion file="conclusion.rtf"
mime-type="text/rtf" />
<!-- List all component packages -->
<pkg-ref id="com.saltstack.salt"
version="@VERSION@"
@ -16,15 +29,14 @@
<!-- List them again here. They can now be organized
as a hierarchy if you want. -->
<choices-outline>
<line choice="com.saltstack.salt"/>
<line choice="com.saltstack.salt" />
</choices-outline>
<!-- Define each choice above -->
<choice
id="com.saltstack.salt"
visible="false"
title="Salt @VERSION@"
description="Salt @VERSION@"
start_selected="true">
<pkg-ref id="com.saltstack.salt"/>
<choice id="com.saltstack.salt"
visible="false"
title="Salt @VERSION@"
description="Salt @VERSION@"
start_selected="true">
<pkg-ref id="com.saltstack.salt" />
</choice>
</installer-gui-script>

View file

@ -1,15 +1,15 @@
{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf130
{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf340
{\fonttbl\f0\froman\fcharset0 Times-Roman;}
{\colortbl;\red255\green255\blue255;\red0\green0\blue0;}
{\colortbl;\red255\green255\blue255;}
\vieww10800\viewh8400\viewkind0
\deftab720
\pard\pardeftab720\sl560\sa321\partightenfactor0
\f0\b\fs48 \cf2 \expnd0\expndtw0\kerning0
\outl0\strokewidth0 \strokec2 Salt - Remote execution system\
\f0\b\fs48 \cf0 \expnd0\expndtw0\kerning0
Salt - Remote execution system\
\pard\pardeftab720\sl280\sa240\partightenfactor0
\b0\fs24 \cf2 Copyright 2014-2015 SaltStack Team\
\b0\fs24 \cf0 Copyright 2014-2016 SaltStack Team\
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\
http://www.apache.org/licenses/LICENSE-2.0\
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\
}
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.}

View file

@ -1,31 +1,31 @@
apache-libcloud==0.19.0
backports.ssl_match_hostname==3.4.0.2
apache-libcloud==0.20.1
backports.ssl_match_hostname==3.5.0.1
backports_abc==0.4
certifi
cffi==1.3.1
CherryPy==3.2.3
click==4.1
enum34==1.1.1
cffi==1.5.0
CherryPy==4.0.0
click==6.2
enum34==1.1.2
gitdb==0.6.4
GitPython==1.0.1
idna==2.0
ioflo==1.4.9
ipaddress==1.0.15
ioflo==1.5.0
ipaddress==1.0.16
Jinja2==2.8
libnacl==1.4.3
libnacl==1.4.4
linode-python==1.1.1
Mako==1.0.3
MarkupSafe==0.23
msgpack-python==0.4.6
msgpack-python==0.4.7
pyasn1==0.1.9
pycparser==2.14
pycrypto==2.6.1
python_dateutil==2.4.2
python-dateutil==2.4.2
python-gnupg==0.3.8
PyYAML==3.11
pyzmq==15.1.0
pyzmq==15.2.0
raet==0.6.5
requests==2.9.0
requests==2.9.1
singledispatch==3.4.0.3
six==1.10.0
smmap==0.9.0

View file

@ -1,4 +1,2 @@
cryptography==1.1.2
cryptography==1.2.2
pyOpenSSL==0.15.1
pygit2==0.23.2

View file

@ -3,7 +3,7 @@
<plist version="1.0">
<dict>
<key>Label</key>
<string>salt-api</string>
<string>com.saltstack.salt.api</string>
<key>RunAtLoad</key>
<true/>
<key>KeepAlive</key>

View file

@ -3,7 +3,7 @@
<plist version="1.0">
<dict>
<key>Label</key>
<string>salt-master</string>
<string>com.saltstack.salt.master</string>
<key>RunAtLoad</key>
<true/>
<key>KeepAlive</key>

View file

@ -3,7 +3,7 @@
<plist version="1.0">
<dict>
<key>Label</key>
<string>salt-minion</string>
<string>com.saltstack.salt.minion</string>
<key>RunAtLoad</key>
<true/>
<key>KeepAlive</key>

View file

@ -3,7 +3,7 @@
<plist version="1.0">
<dict>
<key>Label</key>
<string>salt-syndic</string>
<string>com.saltstack.salt.syndic</string>
<key>RunAtLoad</key>
<true/>
<key>KeepAlive</key>

View file

@ -1,30 +0,0 @@
#!/bin/bash
###############################################################################
#
# Title: Post Script for Salt Installation
# Authors: Shane Lee
# Date: December 2015
#
# Description: This script copies the minion config file and starts the salt
# service
#
# Requirements:
# - None
#
# Usage:
# This script is run as a part of the OSX Salt Installation
#
###############################################################################
###############################################################################
# Check for existing minion config, copy if it doesn't exist
###############################################################################
if [ ! -f /etc/salt/minion ]; then
cp /etc/salt/minion.dist /etc/salt/minion
fi
###############################################################################
# Register Salt as a service
###############################################################################
set -e
launchctl load "/Library/LaunchDaemons/com.saltstack.salt.minion.plist"

67
pkg/osx/scripts/postinstall Executable file
View file

@ -0,0 +1,67 @@
#!/bin/bash
###############################################################################
#
# Title: Post Script for Salt Installation
# Authors: Shane Lee
# Date: December 2015
#
# Description: This script copies the minion config file and starts the salt
# service
#
# Requirements:
# - None
#
# Usage:
# This script is run as a part of the OSX Salt Installation
#
###############################################################################
echo "Post install started on:" > /tmp/postinstall.txt
date >> /tmp/postinstall.txt
trap 'quit_on_error $LINENO $BASH_COMMAND' ERR
quit_on_error() {
echo "$(basename $0) caught error on line : $1 command was: $2" >> /tmp/postinstall.txt
exit -1
}
###############################################################################
# Check for existing minion config, copy if it doesn't exist
###############################################################################
if [ ! -f /etc/salt/minion ]; then
echo "Config copy: Started..." >> /tmp/postinstall.txt
cp /etc/salt/minion.dist /etc/salt/minion
echo "Config copy: Successful" >> /tmp/postinstall.txt
fi
###############################################################################
# Register Salt as a service
###############################################################################
echo "Service start: Started..." >> /tmp/postinstall.txt
# launchctl load "/Library/LaunchDaemons/com.saltstack.salt.minion.plist"
echo "Service start: Enabling service..." >> /tmp/postinstall.txt
launchctl enable system/com.saltstack.salt.minion
echo "Service start: Bootstrapping service..." >> /tmp/postinstall.txt
launchctl bootstrap system /Library/LaunchDaemons/com.saltstack.salt.minion.plist
if /bin/launchctl list "com.saltstack.salt.minion" &> /dev/null; then
echo "Service is running" >> /tmp/postinstall.txt
else
echo "Service start: Kickstarting service..." >> /tmp/postinstall.txt
launchctl kickstart -kp system/com.saltstack.salt.minion
fi
echo "Service start: Successful" >> /tmp/postinstall.txt
echo "Service disable: Disabling Master, Syndic, and API" >> /tmp/postinstall.txt
launchctl disable system/com.saltstack.salt.master
launchctl disable system/com.saltstack.salt.syndic
launchctl disable system/com.saltstack.salt.api
# echo "Path: Adding salt to the path..." >> /tmp/postinstall.txt
# echo "/opt/salt/bin" > /etc/paths.d/salt
echo "Post install completed successfully" >> /tmp/postinstall.txt
exit 0

View file

@ -15,11 +15,26 @@
# This script is run as a part of the OSX Salt Installation
#
###############################################################################
echo "Preinstall started on:" > /tmp/preinstall.txt
date >> /tmp/preinstall.txt
trap 'quit_on_error $LINENO $BASH_COMMAND' ERR
quit_on_error() {
echo "$(basename $0) caught error on line : $1 command was: $2" >> /tmp/preinstall.txt
exit -1
}
###############################################################################
# Stop the service
###############################################################################
set -e
if /bin/launchctl list "com.saltstack.salt.minion" &> /dev/null; then
/bin/launchctl unload "/Library/LaunchDaemons/com.saltstack.salt.minion.plist"
echo "Stop service: Started..." >> /tmp/preinstall.txt
# /bin/launchctl unload "/Library/LaunchDaemons/com.saltstack.salt.minion.plist"
launchctl disable system/com.saltstack.salt.minion
launchctl bootout system /Library/LaunchDaemons/com.saltstack.salt.minion.plist
echo "Stop service: Successful" >> /tmp/preinstall.txt
fi
echo "Preinstall Completed Successfully" >> /tmp/preinstall.txt
exit 0

View file

@ -1 +0,0 @@
072bbfc3ffe3a838945ce6e7c4bbce267362673c3b870886accdc5a5ee01dbd071604fca6aa519d077676423d37bfe987b71f22f14a194f8d6ec8fb9de0a6049 ./cmake-3.4.1.tar.gz

View file

@ -1 +0,0 @@
272fb65ab9ca0a21e9f0dcfb2c638457e87cbb938c65ee850123474d11f2858496f84d3fa9edca27cd91c7220160cfdb59f90bd46ddc45395514addc9fd4151c ./gdbm-1.11.tar.gz

View file

@ -1 +0,0 @@
b73f114a117ccab284cf5891dac050e3016d28e0b1fc71639442cdb42accef676115af90a12deff4bcc1f599cc0cbdeb38142cbf4570bd7d03634786ad32c95f ./openssl-1.0.2e.tar.gz

View file

@ -0,0 +1 @@
50abf6dc94cafd06e7fd20770808bdc675c88daa369e4f752bd584ab17f72a57357c1ca1eca3c83e6745b5a3c9c73c99dce70adaa904d73f6df4c75bc7138351 ./openssl-1.0.2f.tar.gz

View file

@ -1 +0,0 @@
f70efaf46d570b85c7637172b0ee2eb9a4aa73ba38a62bb45075e665929d9701b96fba0aea6c767fd9a2a0d39dfe8e70ab06da08f8524aee76a7c502f370a401 ./readline-6.3.tar.gz

11
pkg/osx/shasums/readme.md Normal file
View file

@ -0,0 +1,11 @@
ShaSums
=======
This directory contains shasums for files that are downloaded by the `build_env.sh` script.
The sha's have been created using the following command:
```
shasum -a 512 ./<filename> > ./<filename>.sha512
```

View file

@ -1 +0,0 @@
f2f6244dfee4dab2dc5ef9607808404467a1f6baa684aa4e24b7116e7e7f63f396eef3282c1bcffbef47f19824731c2887deadbe3b2dad8a075b0639e5965d9e ./v0.23.4

View file

@ -6,6 +6,7 @@ After=network.target
Type=simple
LimitNOFILE=8192
ExecStart=/usr/bin/salt-api
TimeoutStopSec=3
[Install]
WantedBy=multi-user.target

View file

@ -360,11 +360,11 @@ Mon Mar 30 21:41:22 UTC 2015 - aboe76@gmail.com
+ Major performance improvements to Saltnado
+ Allow KVM module to operate under KVM itself or VMWare Fusion
+ Various fixes to the Windows installation scripts
+ Fix issue where the syndic would not correctly propogate loads to the master
+ Fix issue where the syndic would not correctly propagate loads to the master
job cache.
+ Improve error handling on invalid /etc/network/interfaces file in salt
networking modules
+ Fix bug where a reponse status was not checked for in fileclient.get_url
+ Fix bug where a response status was not checked for in fileclient.get_url
+ Enable eauth when running salt in batch mode
+ Increase timeout in Boto Route53 module
+ Fix bugs with Salt's 'tar' module option parsing

View file

@ -44,6 +44,8 @@ python "%CurrDir%\portable.py" -f "%BinDir%\Scripts\pip2.exe"
del /S /Q "%BinDir%\*.pyc"
:: Remove all Compiled HTML Help (.chm)
del /S /Q "%BinDir%\*.chm"
:: Remove all empty text files (they are placeholders for git)
del /S /Q "%BinDir%\..\empty.*"
:: Delete Unused Docs and Modules
If Exist "%BinDir%\Doc" rd /S /Q "%BinDir%\Doc"

View file

@ -281,7 +281,7 @@ pki_dir: /conf/pki/minion
###########################################
# Disable multiprocessing support, by default when a minion receives a
# publication a new process is spawned and the command is executed therein.
multiprocessing: True
# multiprocessing: True
###### Logging settings #####
###########################################
@ -314,7 +314,7 @@ multiprocessing: True
# Default: 'warning'
#log_level_logfile:
#
# The date and time format used in log messages. Allowed date/time formating
# The date and time format used in log messages. Allowed date/time formatting
# can be seen on http://docs.python.org/library/time.html#time.strftime
#log_datefmt: '%H:%M:%S'
#log_datefmt_logfile: '%Y-%m-%d %H:%M:%S'

View file

@ -222,7 +222,7 @@ ShowUnInstDetails show
Section "MainSection" SEC01
SetOutPath "$INSTDIR\"
SetOverwrite try
SetOverwrite off
CreateDirectory $INSTDIR\conf\pki\minion
File /r "..\buildenv\"
Exec 'icacls c:\salt /inheritance:r /grant:r "BUILTIN\Administrators":(OI)(CI)F /grant:r "NT AUTHORITY\SYSTEM":(OI)(CI)F'

View file

@ -9,7 +9,6 @@ from __future__ import absolute_import, print_function, generators
import os
import copy
import glob
import inspect
import time
import signal
import logging
@ -466,16 +465,28 @@ class CloudClient(object):
)
'''
mapper = salt.cloud.Map(self._opts_defaults(action=fun, names=names))
if instance:
if names:
raise SaltCloudConfigError(
'Please specify either a list of \'names\' or a single '
'\'instance\', but not both.'
)
names = [instance]
if names and not provider:
self.opts['action'] = fun
return mapper.do_action(names, kwargs)
if provider:
if provider and not names:
return mapper.do_function(provider, fun, kwargs)
else:
# This should not be called without either an instance or a
# provider.
# provider. If both an instance/list of names and a provider
# are given, then we also need to exit. We can only have one
# or the other.
raise SaltCloudConfigError(
'Either an instance or a provider must be specified.'
'Either an instance (or list of names) or a provider must be '
'specified, but not both.'
)
@ -1488,15 +1499,8 @@ class Cloud(object):
ret[alias][driver] = {}
if kwargs:
argnames = inspect.getargspec(self.clouds[fun]).args
for _ in inspect.getargspec(self.clouds[fun]).defaults:
argnames.pop(0)
kws = {}
for kwarg in argnames:
kws[kwarg] = kwargs.get(kwarg, None)
kws['call'] = 'action'
ret[alias][driver][vm_name] = self.clouds[fun](
vm_name, **kws
vm_name, kwargs, call='action'
)
else:
ret[alias][driver][vm_name] = self.clouds[fun](

View file

@ -175,16 +175,6 @@ def __virtual__():
if get_dependencies() is False:
return False
for provider, details in six.iteritems(__opts__['providers']):
if 'ec2' not in details:
continue
parameters = details['ec2']
if salt.utils.cloud.check_key_path_and_mode(
provider, parameters['private_key']
) is False:
return False
return __virtualname__
@ -195,7 +185,7 @@ def get_configured_provider():
return config.is_provider_configured(
__opts__,
__active_provider_name__ or __virtualname__,
('id', 'key', 'keyname', 'private_key')
('id', 'key')
)
@ -2316,6 +2306,43 @@ def create(vm_=None, call=None):
if 'provider' in vm_:
vm_['driver'] = vm_.pop('provider')
# Check for private_key and keyfile name for bootstrapping new instances
deploy = config.get_cloud_config_value(
'deploy', vm_, __opts__, default=True
)
win_password = config.get_cloud_config_value(
'win_password', vm_, __opts__, default=''
)
key_filename = config.get_cloud_config_value(
'private_key', vm_, __opts__, search_global=False, default=None
)
if deploy or (deploy and win_password == 'auto'):
# The private_key and keyname settings are only needed for bootstrapping
# new instances when deploy is True, or when win_password is set to 'auto'
# and deploy is also True.
if key_filename is None:
raise SaltCloudSystemExit(
'The required \'private_key\' configuration setting is missing from the '
'\'ec2\' driver.'
)
if not os.path.exists(key_filename):
raise SaltCloudSystemExit(
'The EC2 key file {0!r} does not exist.\n'.format(
key_filename
)
)
key_mode = str(
oct(stat.S_IMODE(os.stat(key_filename).st_mode))
)
if key_mode not in ('0400', '0600'):
raise SaltCloudSystemExit(
'The EC2 key file {0!r} needs to be set to mode 0400 or 0600.\n'.format(
key_filename
)
)
salt.utils.cloud.fire_event(
'event',
'starting create',
@ -2331,15 +2358,6 @@ def create(vm_=None, call=None):
vm_['name'], vm_['profile'], 'ec2', vm_['driver']
)
key_filename = config.get_cloud_config_value(
'private_key', vm_, __opts__, search_global=False, default=None
)
if key_filename is not None and not os.path.isfile(key_filename):
raise SaltCloudConfigError(
'The defined key_filename \'{0}\' does not exist'.format(
key_filename
)
)
vm_['key_filename'] = key_filename
# wait_for_instance requires private_key
vm_['private_key'] = key_filename
@ -2376,6 +2394,12 @@ def create(vm_=None, call=None):
else:
# Put together all of the information required to request the instance,
# and then fire off the request for it
if keyname(vm_) is None:
raise SaltCloudSystemExit(
'The required \'keyname\' configuration setting is missing from the '
'\'ec2\' driver.'
)
data, vm_ = request_instance(vm_, location)
# If data is a str, it's an error
@ -2469,8 +2493,7 @@ def create(vm_=None, call=None):
log.debug('Salt interface set to: {0}'.format(salt_ip_address))
vm_['salt_host'] = salt_ip_address
if config.get_cloud_config_value(
'deploy', vm_, __opts__, default=True):
if deploy:
display_ssh_output = config.get_cloud_config_value(
'display_ssh_output', vm_, __opts__, default=True
)

View file

@ -4334,7 +4334,11 @@ def _list_nodes(full=False):
private_ips = []
for nic in vm.find('TEMPLATE').findall('NIC'):
private_ips.append(nic.find('IP').text)
try:
private_ips.append(nic.find('IP').text)
except AttributeError:
# There is no private IP; skip it
pass
vms[name]['id'] = vm.find('ID').text
vms[name]['image'] = vm.find('TEMPLATE').find('TEMPLATE_ID').text

View file

@ -39,6 +39,7 @@ import salt.utils.validate.path
import salt.utils.xdg
import salt.exceptions
import salt.utils.sdb
from salt.utils.locales import sdecode
log = logging.getLogger(__name__)
@ -54,10 +55,8 @@ if salt.utils.is_windows():
# support in ZeroMQ, we want the default to be something that has a
# chance of working.
_DFLT_IPC_MODE = 'tcp'
_DFLT_MULTIPROCESSING_MODE = False
else:
_DFLT_IPC_MODE = 'ipc'
_DFLT_MULTIPROCESSING_MODE = True
FLO_DIR = os.path.join(
os.path.dirname(__file__),
@ -506,6 +505,15 @@ VALID_OPTS = {
# Whether or not a copy of the master opts dict should be rendered into minion pillars
'pillar_opts': bool,
# Cache the master pillar to disk to avoid having to pass through the rendering system
'pillar_cache': bool,
# Pillar cache TTL, in seconds. Has no effect unless `pillar_cache` is True
'pillar_cache_ttl': int,
# Pillar cache backend. Defaults to `disk` which stores caches in the master cache
'pillar_cache_backend': str,
'pillar_safe_render_error': bool,
# When creating a pillar, there are several strategies to choose from when
@ -736,7 +744,7 @@ VALID_OPTS = {
# primarily as a mitigation technique against minion disconnects.
'ping_interval': int,
# Instructs the salt CLI to print a summary of a minion reponses before returning
# Instructs the salt CLI to print a summary of a minion responses before returning
'cli_summary': bool,
# The maximum number of minion connections allowed by the master. Can have performance
@ -811,6 +819,11 @@ DEFAULT_MINION_OPTS = {
'autoload_dynamic_modules': True,
'environment': None,
'pillarenv': None,
# `pillar_cache` and `pillar_ttl`
# are not used on the minion but are unavoidably in the code path
'pillar_cache': False,
'pillar_cache_ttl': 3600,
'pillar_cache_backend': 'disk',
'extension_modules': os.path.join(salt.syspaths.CACHE_DIR, 'minion', 'extmods'),
'state_top': 'top.sls',
'state_top_saltenv': None,
@ -882,7 +895,7 @@ DEFAULT_MINION_OPTS = {
'open_mode': False,
'auto_accept': True,
'autosign_timeout': 120,
'multiprocessing': _DFLT_MULTIPROCESSING_MODE,
'multiprocessing': True,
'mine_enabled': True,
'mine_return_job': False,
'mine_interval': 60,
@ -1080,6 +1093,9 @@ DEFAULT_MASTER_OPTS = {
'pillar_safe_render_error': True,
'pillar_source_merging_strategy': 'smart',
'pillar_merge_lists': False,
'pillar_cache': False,
'pillar_cache_ttl': 3600,
'pillar_cache_backend': 'disk',
'ping_on_rotate': False,
'peer': {},
'preserve_minion_cache': False,
@ -1441,7 +1457,10 @@ def _read_conf_file(path):
conf_opts = {}
# allow using numeric ids: convert int to string
if 'id' in conf_opts:
conf_opts['id'] = str(conf_opts['id'])
if not isinstance(conf_opts['id'], six.string_types):
conf_opts['id'] = str(conf_opts['id'])
else:
conf_opts['id'] = sdecode(conf_opts['id'])
for key, value in six.iteritems(conf_opts.copy()):
if isinstance(value, text_type) and six.PY2:
# We do not want unicode settings

View file

@ -59,6 +59,9 @@ def dropfile(cachedir, user=None):
mask = os.umask(191)
try:
log.info('Rotating AES key')
if os.path.isfile(dfn):
log.info('AES key rotation already requested')
return
if os.path.isfile(dfn) and not os.access(dfn, os.W_OK):
os.chmod(dfn, stat.S_IRUSR | stat.S_IWUSR)

View file

@ -709,7 +709,9 @@ class RemoteFuncs(object):
'''
if any(key not in load for key in ('id', 'grains')):
return False
pillar = salt.pillar.Pillar(
# pillar = salt.pillar.Pillar(
log.debug('Master _pillar using ext: {0}'.format(load.get('ext')))
pillar = salt.pillar.get_pillar(
self.opts,
load['grains'],
load['id'],

View file

@ -970,7 +970,7 @@ def id_():
'''
return {'id': __opts__.get('id', '')}
_REPLACE_LINUX_RE = re.compile(r'linux', re.IGNORECASE)
_REPLACE_LINUX_RE = re.compile(r'\Wlinux', re.IGNORECASE)
# This maps (at most) the first ten characters (no spaces, lowercased) of
# 'osfullname' to the 'os' grain that Salt traditionally uses.

View file

@ -42,9 +42,10 @@ def _find_credentials():
for user in usernames:
for pwd in __pillar__['proxy']['passwords']:
r = __salt__['dracr.get_chassis_name'](host=__pillar__['proxy']['host'],
admin_username=user,
admin_password=pwd)
r = salt.modules.dracr.get_chassis_name(
host=__pillar__['proxy']['host'],
admin_username=user,
admin_password=pwd)
# Retcode will be present if the chassis_name call failed
try:
if r.get('retcode', None) is None:

View file

@ -1202,8 +1202,9 @@ class LazyLoader(salt.utils.lazy.LazyDict):
mod = None
fpath, suffix = self.file_mapping[name]
self.loaded_files.add(name)
fpath_dirname = os.path.dirname(fpath)
try:
sys.path.append(os.path.dirname(fpath))
sys.path.append(fpath_dirname)
if suffix == '.pyx':
mod = pyximport.load_module(name, fpath, tempfile.gettempdir())
elif suffix == '.o':
@ -1269,7 +1270,7 @@ class LazyLoader(salt.utils.lazy.LazyDict):
)
return False
finally:
sys.path.pop()
sys.path.remove(fpath_dirname)
if hasattr(mod, '__opts__'):
mod.__opts__.update(self.opts)

View file

@ -69,33 +69,32 @@ class FormatterWithHost(logging.Formatter, NewStyleClassMixIn):
def setup_handlers():
handler_id = 'log4mongo_handler'
if handler_id not in __opts__:
yield False
if handler_id in __opts__:
config_fields = {
'host': 'host',
'port': 'port',
'database_name': 'database_name',
'collection': 'collection',
'username': 'username',
'password': 'password',
'write_concern': 'w'
}
config_fields = {
'host': 'host',
'port': 'port',
'database_name': 'database_name',
'collection': 'collection',
'username': 'username',
'password': 'password',
'write_concern': 'w'
}
config_opts = {}
for config_opt, arg_name in config_fields.iteritems():
config_opts[arg_name] = __opts__[handler_id].get(config_opt)
config_opts = {}
for config_opt, arg_name in config_fields.iteritems():
config_opts[arg_name] = __opts__[handler_id].get(config_opt)
config_opts['level'] = LOG_LEVELS[
__opts__[handler_id].get(
'log_level',
__opts__.get('log_level', 'error')
)
]
config_opts['level'] = LOG_LEVELS[
__opts__[handler_id].get(
'log_level',
__opts__.get('log_level', 'error')
handler = MongoHandler(
formatter=FormatterWithHost(),
**config_opts
)
]
handler = MongoHandler(
formatter=FormatterWithHost(),
**config_opts
)
yield handler
yield handler
else:
yield False

View file

@ -445,6 +445,15 @@ class Master(SMaster):
if not self.opts['fileserver_backend']:
errors.append('No fileserver backends are configured')
# Check to see if we need to create a pillar cache dir
if self.opts['pillar_cache'] and not os.path.isdir(os.path.join(self.opts['cachedir'], 'pillar_cache')):
try:
prev_umask = os.umask(0o077)
os.mkdir(os.path.join(self.opts['cachedir'], 'pillar_cache'))
os.umask(prev_umask)
except OSError:
pass
non_legacy_git_pillars = [
x for x in self.opts.get('ext_pillar', [])
if 'git' in x
@ -1245,7 +1254,8 @@ class AESFuncs(object):
load['grains']['id'] = load['id']
pillar_dirs = {}
pillar = salt.pillar.Pillar(
# pillar = salt.pillar.Pillar(
pillar = salt.pillar.get_pillar(
self.opts,
load['grains'],
load['id'],

View file

@ -92,7 +92,7 @@ def check_exists(name, path):
salt '*' alternatives.check_exists name path
'''
cmd = [_get_cmd(), '--list', name]
cmd = [_get_cmd(), '--display', name]
out = __salt__['cmd.run_all'](cmd, python_shell=False)
if out['retcode'] > 0 and out['stderr'] != '':

View file

@ -863,7 +863,8 @@ def purge(name=None, pkgs=None, **kwargs):
def upgrade(refresh=True, dist_upgrade=False, **kwargs):
'''
Upgrades all packages via ``apt-get dist-upgrade``
Upgrades all packages via ``apt-get upgrade`` or ``apt-get dist-upgrade``
if ``dist_upgrade`` is ``True``.
Returns a dict containing the changes::
@ -1674,7 +1675,7 @@ def mod_repo(repo, saltenv='base', **kwargs):
if ``True``, will attempt to de-dup and consolidate sources
.. note:: Due to the way keys are stored for APT, there is a known issue
where the key wont be updated unless another change is made
where the key won't be updated unless another change is made
at the same time. Keys should be properly added on initial
configuration.

View file

@ -80,7 +80,7 @@ def __virtual__():
if not HAS_BOTO:
return (False, 'The boto_asg module could not be loaded: boto libraries not found')
__utils__['boto.assign_funcs'](__name__, 'asg', module='ec2.autoscale')
__utils__['boto.assign_funcs'](__name__, 'asg', module='ec2.autoscale', pack=__salt__)
setattr(sys.modules[__name__], '_get_ec2_conn',
__utils__['boto.get_connection_func']('ec2'))
return True

View file

@ -64,7 +64,7 @@ def __virtual__():
def __init__(opts):
if HAS_BOTO:
__utils__['boto.assign_funcs'](__name__, 'cfn', module='cloudformation')
__utils__['boto.assign_funcs'](__name__, 'cfn', module='cloudformation', pack=__salt__)
def exists(name, region=None, key=None, keyid=None, profile=None):

View file

@ -76,7 +76,8 @@ def __virtual__():
if not HAS_BOTO:
return (False, 'The boto_cloudwatch module cannot be loaded: boto libraries are unavailable.')
__utils__['boto.assign_funcs'](__name__, 'cloudwatch',
module='ec2.cloudwatch')
module='ec2.cloudwatch',
pack=__salt__)
return True

View file

@ -75,7 +75,7 @@ def __virtual__():
'''
if not HAS_BOTO:
return (False, 'The module boto_dynamodb could not be loaded: boto libraries not found')
__utils__['boto.assign_funcs'](__name__, 'dynamodb2')
__utils__['boto.assign_funcs'](__name__, 'dynamodb2', pack=__salt__)
return True

View file

@ -5,7 +5,7 @@ Connection module for Amazon EC2
.. versionadded:: 2015.8.0
:configuration: This module accepts explicit EC2 credentials but can also
utilize IAM roles assigned to the instance trough Instance Profiles.
utilize IAM roles assigned to the instance through Instance Profiles.
Dynamic credentials are then automatically obtained from AWS API and no
further configuration is necessary. More Information available at:
@ -29,15 +29,15 @@ Connection module for Amazon EC2
If a region is not specified, the default is us-east-1.
It's also possible to specify key, keyid and region via a profile, either
It's also possible to specify key, keyid, and region via a profile, either
as a passed in dict, or as a string to pull from pillars or minion config:
.. code-block:: yaml
myprofile:
keyid: GKTADJGHEIQSXMKKRBJ08H
key: askdjghsdfjkghWupUjasdflkdfklgjsdfjajkghs
region: us-east-1
keyid: GKTADJGHEIQSXMKKRBJ08H
key: askdjghsdfjkghWupUjasdflkdfklgjsdfjajkghs
region: us-east-1
:depends: boto
@ -84,7 +84,9 @@ def __virtual__():
return (False, "The boto_ec2 module cannot be loaded: boto library not found")
elif _LooseVersion(boto.__version__) < _LooseVersion(required_boto_version):
return (False, "The boto_ec2 module cannot be loaded: boto library version incorrect ")
return True
else:
__utils__['boto.assign_funcs'](__name__, 'ec2', pack=__salt__)
return True
def __init__(opts):

View file

@ -74,7 +74,7 @@ def __virtual__():
'''
if not HAS_BOTO:
return (False, 'The modle boto_elasticache could not be loaded: boto libraries not found')
__utils__['boto.assign_funcs'](__name__, 'elasticache')
__utils__['boto.assign_funcs'](__name__, 'elasticache', pack=__salt__)
return True

View file

@ -86,7 +86,7 @@ def __virtual__():
'''
if not HAS_BOTO:
return (False, "The boto_elb module cannot be loaded: boto library not found")
__utils__['boto.assign_funcs'](__name__, 'elb', module='ec2.elb')
__utils__['boto.assign_funcs'](__name__, 'elb', module='ec2.elb', pack=__salt__)
return True
@ -232,7 +232,7 @@ def create(name, availability_zones, listeners, subnets=None,
return False
except boto.exception.BotoServerError as error:
log.debug(error)
msg = 'Failed to create ELB {0}: {1}'.format(name, error)
msg = 'Failed to create ELB {0}: {1}: {2}'.format(name, error.error_code, error.message)
log.error(msg)
return False

View file

@ -75,7 +75,7 @@ def __virtual__():
def __init__(opts):
salt.utils.compat.pack_dunder(__name__)
if HAS_BOTO:
__utils__['boto.assign_funcs'](__name__, 'iam')
__utils__['boto.assign_funcs'](__name__, 'iam', pack=__salt__)
def instance_profile_exists(name, region=None, key=None, keyid=None,

View file

@ -80,7 +80,7 @@ def __virtual__():
def __init__(opts):
salt.utils.compat.pack_dunder(__name__)
if HAS_BOTO:
__utils__['boto.assign_funcs'](__name__, 'kms')
__utils__['boto.assign_funcs'](__name__, 'kms', pack=__salt__)
def create_alias(alias_name, target_key_id, region=None, key=None, keyid=None,

View file

@ -70,7 +70,7 @@ def __virtual__():
'''
if not HAS_BOTO:
return (False, 'The boto_rds module could not be loaded: boto libraries not found')
__utils__['boto.assign_funcs'](__name__, 'rds', module='rds2')
__utils__['boto.assign_funcs'](__name__, 'rds', module='rds2', pack=__salt__)
return True

View file

@ -90,7 +90,7 @@ def __virtual__():
def __init__(opts):
salt.utils.compat.pack_dunder(__name__)
if HAS_BOTO:
__utils__['boto.assign_funcs'](__name__, 'route53')
__utils__['boto.assign_funcs'](__name__, 'route53', pack=__salt__)
def _get_split_zone(zone, _conn, private_zone):

View file

@ -86,7 +86,7 @@ def __virtual__():
elif _LooseVersion(boto.__version__) < _LooseVersion(required_boto_version):
return (False, 'The boto_secgroup module could not be loaded: boto library v2.4.0 not found')
else:
__utils__['boto.assign_funcs'](__name__, 'ec2')
__utils__['boto.assign_funcs'](__name__, 'ec2', pack=__salt__)
return True

View file

@ -66,7 +66,7 @@ def __virtual__():
'''
if not HAS_BOTO:
return (False, 'The boto_sns module could not be loaded: boto libraries not found')
__utils__['boto.assign_funcs'](__name__, 'sns')
__utils__['boto.assign_funcs'](__name__, 'sns', pack=__salt__)
return True

View file

@ -73,7 +73,7 @@ def __virtual__():
'''
if not HAS_BOTO:
return (False, 'The boto_sqs module could not be loaded: boto libraries not found')
__utils__['boto.assign_funcs'](__name__, 'sqs')
__utils__['boto.assign_funcs'](__name__, 'sqs', pack=__salt__)
return True

Some files were not shown because too many files have changed in this diff Show more