簡體   English   中英

使用 Ansible 設置新的 Junos OS 用戶

[英]Using Ansible to set new Junos OS User

我正在嘗試為運行 Junos OS 的 vMX 路由器創建一個新用戶。 用戶需要是具有以下憑據的超級用戶:

用戶名:管理員

密碼:admin123

直接從命令行執行此操作很容易,我只需更改為編輯模式並鍵入以下命令

set system login user admin uid 3000 class super-user authentication plain-text-password

控制台然后提示你輸入密碼然后確認,所以我輸入密碼如下

admin123
admin123

然后我可以提交更改並創建用戶。 問題在於,當我嘗試使用 ansible 對 8 個不同的 vmx 路由器重復此過程時。 我已經設置了以下劇本:

---
- name: Create admin user
  hosts: newvmx
  roles:
          - Juniper.junos
  connection: local
  gather_facts: no

  tasks:

          - name: create new user
            juniper_junos_config:
                    config_mode: "private"
                    load: "set"
                    lines:
                            - "set system login user admin123 uid 3000 class super-user authentication plain-text password"
                            - "admin123"
                            - "admin123"

但這返回了以下錯誤:


PLAY [Create admin user] ***************************************************************************************************************************************************************************************

TASK [create new user] **************************************************************************************************************************************************************************************
fatal: [vMX6]: FAILED! => {"ansible_facts": {"discovered_interpreter_python": "/usr/bin/python"}, "changed": false, "msg": "Failure loading the configuraton: ConfigLoadError(severity: error, bad_element: plain-text, message: error: syntax error\nerror: unknown command\nerror: unknown command)"}

我假設這與命令的最后部分有關,因為直接在機器上執行此操作時,會提示用戶輸入密碼,因此當 ansible 傳遞行時,操作系統不知道如何處理僅包含密碼的行。

我還嘗試了以下劇本:

---
- name: Create admin user
  hosts: newvmx
  roles:
          - Juniper.junos
  connection: local
  gather_facts: no

  tasks:

          - name: create new user
            juniper_junos_config:
                    config_mode: "private"
                    load: "set"
                    lines:
                            - "set system login user admin uid 3000 class super-user authentication plain-text password admin123"

但這會導致下面的語法錯誤。 所以這不是一次成功的嘗試。

PLAY [Create admin user] ***************************************************************************************************************************************************************************************

TASK [create new user] **************************************************************************************************************************************************************************************
fatal: [vMX10]: FAILED! => {"ansible_facts": {"discovered_interpreter_python": "/usr/bin/python"}, "changed": false, "msg": "Failure loading the configuraton: ConfigLoadError(severity: error, bad_element: plain-text, message: error: syntax error)"}

那么有什么方法可以通過此命令創建新用戶並使用 ansible 為新用戶設置密碼以加快對多個設備重復該操作的過程?

它通過 netconf session 進行通信。 並且不是用戶交互 session。 因此,您可以在文件中獲取所需的配置並使用 juniper_junos_config 加載它

- name: create user
  hosts: all
  roles:
    - Juniper.junos
  connection: local
  gather_facts: no
  tasks:
    - name: Change Password
      juniper_junos_config:
        host: "{{ ansible_ssh_host }}"
        port: "{{ ansible_ssh_port }}"
        user: user1
        passwd: "{{ passwd }}"
        file: create_user.conf
        load: merge

cat create_user.conf <<< 根據需要的配置進行定義。

system {
    -----
}

如果您需要進一步的幫助,請告訴我。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM