Comments (2)
Here's the docs on config loading via netconf:
http://www.juniper.net/documentation/en_US/junos13.2/topics/reference/tag-summary/netconf-junos-xml-protocol-load-configuration.html
We can enclose set statements in the following tags and pass them along:
I think in this case the config string included in the variable could actually have multiple set statements, as long as they were separated by newlines.
from ansible-junos-stdlib.
This is now supported in the new juniper_junos_config
module via #290.
The new lines
option can be used to specify configuration lines as in this example playbook:
---
- name: "Config from set lines"
hosts: junos-all
connection: local
gather_facts: no
roles:
- Juniper.junos
tasks:
- name: Enable NETCONF SSH and traceoptions.
juniper_junos_config:
load: 'merge'
lines:
- 'set system services netconf ssh'
- 'set system services netconf traceoptions flag all'
- 'set system services netconf traceoptions file netconf.log'
format: 'set'
comment: 'Enable NETCONF with traceoptions'
register: response
- name: Print the complete response
debug:
var: response
Before the playbook is run, NETCONF over SSH is enabled, but traceoptions are not enabled:
user@r0> show configuration system services netconf
ssh;
user@r0>
The playbook is run:
user@h0:~$ ansible-playbook --limit r0 -k ./pb.test.yaml
SSH password:
PLAY [Config from set lines] *******************************************************************************************
TASK [Enable NETCONF SSH and traceoptions.] ****************************************************************************
changed: [r0]
TASK [Print the complete response] *************************************************************************************
ok: [r0] => {
"response": {
"changed": true,
"diff": "\n[edit system services netconf]\n+ traceoptions {\n+ file netconf.log;\n+ flag all;\n+ }\n",
"diff_lines": [
"",
"[edit system services netconf]",
"+ traceoptions {",
"+ file netconf.log;",
"+ flag all;",
"+ }"
],
"failed": false,
"msg": "Configuration has been: opened, loaded, checked, diffed, committed, closed."
}
}
PLAY RECAP *************************************************************************************************************
r0 : ok=2 changed=1 unreachable=0 failed=0
and new resulting configuration:
user@r0> show configuration system services netconf
ssh;
traceoptions {
file netconf.log;
flag all;
}
user@r0>
The lines
option takes a list of strings. However, the format is not restricted to set
statements. It can be any supported config format, such as this example using a config in text
format:
---
- name: "Config from text lines"
hosts: junos-all
connection: local
gather_facts: no
roles:
- Juniper.junos
tasks:
- name: Replace NETCONF config with SSH only
juniper_junos_config:
load: 'replace'
lines:
- 'system {'
- ' services {'
- ' replace: netconf {'
- ' ssh;'
- ' }'
- ' }'
- '}'
format: 'text'
comment: 'Replace NETCONF config with SSH only'
register: response
- name: Print the complete response
debug:
var: response
Executing this playbook:
user@h0:~$ ansible-playbook --limit r0 -k ./pb.test.yaml
SSH password:
PLAY [Config from text lines] ******************************************************************************************
TASK [Replace NETCONF config with SSH only] ****************************************************************************
changed: [r0]
TASK [Print the complete response] *************************************************************************************
ok: [r0] => {
"response": {
"changed": true,
"diff": "\n[edit system services netconf]\n- traceoptions {\n- file netconf.log;\n- flag all;\n- }\n",
"diff_lines": [
"",
"[edit system services netconf]",
"- traceoptions {",
"- file netconf.log;",
"- flag all;",
"- }"
],
"failed": false,
"msg": "Configuration has been: opened, loaded, checked, diffed, committed, closed."
}
}
PLAY RECAP *************************************************************************************************************
r0 : ok=2 changed=1 unreachable=0 failed=0
Using the lines
option to load configs in xml
or json
formats is also supported, but I'll leave that as an exercise for the reader.
from ansible-junos-stdlib.
Related Issues (20)
- Current implementation doesn't handle multi member stacks where versions of members are inconsistent HOT 8
- Ansible SSH connection fails with Authentication Error if I connected to target via host jump HOT 2
- RPC "get-system-core-dumps" with formats "text" only prints the first line of rpc-reply HOT 4
- juniper.device.config module with set system login message " " with "," separated text message replaces "," with newline HOT 2
- Get facts and printing them results in invalid or malformed argument Error HOT 2
- Executing RPC with filters returns The error was: AttributeError: 'JuniperJunosModule' object has no attribute '_check_type_dict' HOT 3
- Address readthedocs upcoming changes HOT 3
- Ansible RPC error with junipe.device.rpc module HOT 2
- ansible-lint violation: missing required arguments: _inventory_hostname, _module_name, _module_utils_path (warning) HOT 2
- juniper.device.software - Software is downloaded for each RE when using remote_package HOT 8
- Feature Request: Add option to not discard uncommitted changes HOT 2
- PyEZ connection fails when ~/.ssh/config has a IdentityFile option for target hosts HOT 4
- sphinx-build -b html . _build/html/ fails with AttributeError: 'Sphinx' object has no attribute 'add_stylesheet' with sphinx 7.2.6 HOT 2
- Random diff on juniper SRX device HOT 1
- Update README to clarify the status of collections vs roles HOT 1
- Update tests to cover all modules, when using pyez connection plugin HOT 1
- All modules fail since Ansible 2.15.9 or >=2.16.3 ("missing required arguments") HOT 9
- Juniper's galaxy module download fails. HOT 1
- juniper.device.config always performs a commit confirmed operation HOT 13
- juniper.device.config does not transmit the error message with juniper.device.pyez connection HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from ansible-junos-stdlib.