# salt.states.junos

## State modules to interact with Junos devices.

maturity:

  new

dependencies:

  junos-eznc, jxmlease

Note

Those who wish to use junos-eznc (PyEZ) version >= 2.1.0, must use the latest salt code from github until the next release.

Refer to `junos` for information on connecting to junos proxy.

salt.states.junos.cli(name, **kwargs)

  Executes the CLI commands and reuturns the text output.

      show version:
        junos.cli:
          - format: xml

      get software version of device:
        junos.cli:
          - name: show version
          - format: text
          - dest: /home/user/show_version.log

  Parameters:

    - Required --

      - name: The command that need to be executed on Junos CLI. (default = None)

    - Optional --

      - kwargs: Keyworded arguments which can be provided like-

          - format: Format in which to get the CLI output. (text or xml, default = 'text')

          - timeout: Set NETCONF RPC timeout. Can be used for commands which take a while to execute. (default = 30 seconds)

          - dest: The destination file where the CLI output can be stored. (default = None)

salt.states.junos.commit(name, **kwargs)

  Commits the changes loaded into the candidate configuration.

      commit the changes:
        junos.commit:
          - confirm: 10

  Parameters:

    Optional --

    - kwargs: Keyworded arguments which can be provided like-

        - timeout: Set NETCONF RPC timeout. Can be used for commands which take a while to execute. (default = 30 seconds)

        - comment: Provide a comment to the commit. (default = None)

        - confirm: Provide time in minutes for commit confirmation. If this option is specified, the commit will be rollbacked in the given time unless the commit is confirmed.

        - sync: On dual control plane systems, requests that the candidate configuration on one control plane be copied to the other control plane,checked for correct syntax, and committed on both Routing Engines. (default = False)

        - force_sync: On dual control plane systems, force the candidate configuration on one control plane to be copied to the other control plane.

        - full: When set to True requires all the daemons to check and evaluate the new configuration.

        - detail: When true return commit detail.

salt.states.junos.commit_check(name)

  Perform a commit check on the configuration.

      perform commit check:
        junos.commit_check

salt.states.junos.diff(name, d_id=0, **kwargs)

  Changed in version 3001.

  Gets the difference between the candidate and the current configuration.

      get the diff:
        junos.diff:
          - d_id: 10

  Parameters:

    Optional --

    - d_id: The rollback diff id (d_id) value [0-49]. (default = 0)

salt.states.junos.file_copy(name, dest=None, **kwargs)

  Copies the file from the local device to the junos device.

      /home/m2/info.txt:
        junos.file_copy:
          - dest: info_copy.txt

  Parameters:

    Required --

    - name: The sorce path where the file is kept.

    - dest: The destination path where the file will be copied.

salt.states.junos.get_table(name, table, table_file, **kwargs)

  New in version 3001.

  Retrieve data from a Junos device using Tables/Views

      get route details:
        junos.get_table:
          - table: RouteTable
          - table_file: routes.yml

      get interface details:
        junos.get_table:
          - table: EthPortTable
          - table_file: ethport.yml
          - table_args:
              interface_name: ge-0/0/0

  name (required)

    task definition

  table (required)

    Name of PyEZ Table

  file

    YAML file that has the table specified in table parameter

  path:

    Path of location of the YAML file. defaults to op directory in jnpr.junos.op

  target:

    if command need to run on FPC, can specify fpc target

  key:

    To overwrite key provided in YAML

  key_items:

    To select only given key items

  filters:

    To select only filter for the dictionary from columns

  template_args:

    key/value pair which should render Jinja template command

salt.states.junos.install_config(name, **kwargs)

  Loads and commits the configuration provided.

      Install the mentioned config:
        junos.install_config:
          - name: salt://configs/interface.set
          - timeout: 100
          - diffs_file: '/var/log/diff'

      Install the mentioned config:
        junos.install_config:
          - path: salt://configs/interface.set
          - timeout: 100
          - template_vars:
              interface_name: lo0
              description: Creating interface via SaltStack.

  name

    Path where the configuration/template file is present. If the file has a `*.conf` extension, the content is treated as text format. If the file has a `*.xml` extension, the content is treated as XML format. If the file has a `*.set` extension, the content is treated as Junos OS `set` commands

  template_vars

    The dictionary of data for the jinja variables present in the jinja template

  timeout30

    Set NETCONF RPC timeout. Can be used for commands which take a while to execute.

  overwriteFalse

    Set to `True` if you want this file is to completely replace the configuration file. Sets action to override

    Note

    This option cannot be used if format is "set".

  mergeFalse

    If set to `True` will set the load-config action to merge. the default load-config action is 'replace' for xml/json/text config

  comment

    Provide a comment to the commit. (default = None)

  confirm

    Provide time in minutes for commit confirmation. If this option is specified, the commit will be rolled back in the given time unless the commit is confirmed.

  diffs_file

    Path to the file where the diff (difference in old configuration and the committed configuration) will be stored.

    Note

    The file will be stored on the proxy minion. To push the files to the master use `cp.push`.

salt.states.junos.install_os(name, **kwargs)

  Installs the given image on the device. After the installation is complete the device is rebooted, if reboot=True is given as a keyworded argument.

      salt://images/junos_image.tgz:
        junos.install_os:
          - timeout: 100
          - reboot: True

  Parameters:

    - Required --

      - name: Path where the image file is present on the pro xy minion.

    - Optional --

      - kwargs: keyworded arguments to be given such as timeout, reboot etc

          - timeout: Set NETCONF RPC timeout. Can be used to RPCs which take a while to execute. (default = 30 seconds)

          - reboot: Whether to reboot after installation (default = False)

          - no_copy: When True the software package will not be SCP’d to the device. (default = False)

salt.states.junos.load(name, **kwargs)

  Loads the configuration provided onto the junos device.

      Install the mentioned config:
        junos.load:
          - name: salt://configs/interface.set

      Install the mentioned config:
        junos.load:
          - name: salt://configs/interface.set
          - template_vars:
              interface_name: lo0
              description: Creating interface via SaltStack.

  Sample template:

      set interfaces {{ interface_name }} unit 0

  name

    Path where the configuration/template file is present. If the file has a `*.conf` extension, the content is treated as text format. If the file has a `*.xml` extension, the content is treated as XML format. If the file has a `*.set` extension, the content is treated as Junos OS `set` commands.

  overwriteFalse

    Set to `True` if you want this file is to completely replace the configuration file.

    Note

    This option cannot be used if format is "set".

  mergeFalse

    If set to `True` will set the load-config action to merge. the default load-config action is 'replace' for xml/json/text config

  updateFalse

    Compare a complete loaded configuration against the candidate configuration. For each hierarchy level or configuration object that is different in the two configurations, the version in the loaded configuration replaces the version in the candidate configuration. When the configuration is later committed, only system processes that are affected by the changed configuration elements parse the new configuration. This action is supported from PyEZ 2.1 (default = False)

  template_vars

    Variables to be passed into the template processing engine in addition to those present in __pillar__, __opts__, __grains__, etc. You may reference these variables in your template like so: {{ template_vars["var_name"] }}

salt.states.junos.lock(name)

  Attempts an exclusive lock on the candidate configuration. This is a non-blocking call.

  Note

  Any user who wishes to use lock, must necessarily unlock the configuration too. Ensure `unlock` is called in the same orchestration run in which the lock is called.

      lock the config:
        junos.lock

salt.states.junos.resultdecorator(function)

salt.states.junos.rollback(name, d_id, **kwargs)

  Rollbacks the committed changes.

      rollback the changes:
        junos.rollback:
          - id: 5

  Parameters:

    Optional --

    - id:

    - d_id: The rollback id value [0-49]. (default = 0) (this variable cannot be named id, it conflicts with the state compiler's internal id)

    - kwargs: Keyworded arguments which can be provided like-

        - timeout: Set NETCONF RPC timeout. Can be used for commands which take a while to execute. (default = 30 seconds)

        - comment: Provide a comment to the commit. (default = None)

        - confirm: Provide time in minutes for commit confirmation. If this option is specified, the commit will be rollbacked in the given time unless the commit is confirmed.

        - diffs_file: Path to the file where any diffs will be written. (default = None)

salt.states.junos.rpc(name, dest=None, format='xml', args=None, **kwargs)

  Executes the given rpc. The returned data can be stored in a file by specifying the destination path with dest as an argument

      get-interface-information:
          junos.rpc:
            - dest: /home/user/rpc.log
            - interface_name: lo0

      fetch interface information with terse:
          junos.rpc:
              - name: get-interface-information
              - terse: True

  Parameters:

    - Required --

      - name: The rpc to be executed. (default = None)

    - Optional --

      - dest: Destination file where the rpc output is stored. (default = None) Note that the file will be stored on the proxy minion. To push the files to the master use the salt's following execution module: `cp.push`

      - format: The format in which the rpc reply must be stored in file specified in the dest (used only when dest is specified) (default = xml)

      - kwargs: keyworded arguments taken by rpc call like-

          - timeout: 30 Set NETCONF RPC timeout. Can be used for commands which take a while to execute. (default= 30 seconds)

          - filter: Only to be used with 'get-config' rpc to get specific configuration.

          - terse: Amount of information you want.

          - interface_name: Name of the interface whose information you want.

salt.states.junos.set_hostname(name, **kwargs)

  Changes the hostname of the device.

      device_name:
        junos.set_hostname:
          - comment: "Host-name set via saltstack."

  Parameters:

    - Required --

      - name: The name to be set. (default = None)

    - Optional --

      - kwargs: Keyworded arguments which can be provided like-

          - timeout: Set NETCONF RPC timeout. Can be used for commands which take a while to execute. (default = 30 seconds)

          - comment: Provide a comment to the commit. (default = None)

          - confirm: Provide time in minutes for commit confirmation. If this option is specified, the commit will be rollbacked in the given time unless the commit is confirmed.

salt.states.junos.shutdown(name, **kwargs)

  Shuts down the device.

      shut the device:
        junos.shutdown:
          - in_min: 10

  Parameters:

    Optional --

    - kwargs:

        - reboot: Whether to reboot instead of shutdown. (default=False)

        - at: Specify time for reboot. (To be used only if reboot=yes)

        - in_min: Specify delay in minutes for shutdown

salt.states.junos.unlock(name)

  Unlocks the candidate configuration.

      unlock the config:
        junos.unlock

salt.states.junos.zeroize(name)

  Resets the device to default factory settings.

      reset my device:
        junos.zeroize

  name: can be anything