Ansible
Configure any RESTCONF client from ansible
Ansible can be used to get, set and call functions in RESTCONF. You can use the Ansible RESTCONF module or you can use the Ansible uri module to make RESTCONF calls as I’ve done here.
Setup
Downloading FreeCONF example source code
git clone https://github.com/freeconf/examples fc-examples
Setup ansible
cd ansible
python3 -m venv venv
source ./venv/bin/activate
python -m pip install -r requirements.txt
file: requirements.txt
ansible==7.0.0
ansible-core==2.15.8
Running
Inventory file
all:
hosts:
car:
http_port: 8090
ansible_host: localhost
Get Config
Command: ansible-playbook -i hosts.yml get-config.yml
File: get-config.yml
---
- name: get configure
hosts: car
connection: httpapi
gather_facts: False
tasks:
- name: get current speed
uri:
url: "http://{{ ansible_host }}:{{ http_port }}/restconf/data/car:?depth=1"
register: results
- debug:
var: results.json
Example Output:
****
TASK [get current speed] *******************************************************
ok: [car]
TASK [debug] *******************************************************************
ok: [car] => {
"results.json": {
"lastRotation": 13100,
"miles": 20900,
"running": false,
"speed": 300
}
}
PLAY RECAP *********************************************************************
car : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
Set Config
Command: ansible-playbook -i hosts.yml set-config.yml
File: set-config.yml
---
- name: configure
hosts: car
connection: httpapi
gather_facts: False
tasks:
- name: change speed
uri:
url: "http://{{ ansible_host }}:{{ http_port }}/restconf/data/car:"
method: PATCH
body_format: json
body: |
{
"speed":10
}
Run RPCs
Here we run the replaceTires
RPC
---
- name: rpc
hosts: car
connection: httpapi
gather_facts: False
tasks:
- name: replace tires
uri:
url: "http://{{ ansible_host }}:{{ http_port }}/restconf/data/car:replaceTires"
method: POST