shopify-junos-ez-stdlib 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/CHANGELOG.md +91 -0
- data/LICENSE +26 -0
- data/README.md +199 -0
- data/docs/Facts.md +192 -0
- data/docs/Providers/Group.md +61 -0
- data/docs/Providers/IPports.md +61 -0
- data/docs/Providers/L1ports.md +29 -0
- data/docs/Providers/L2ports.md +43 -0
- data/docs/Providers/LAGports.md +57 -0
- data/docs/Providers/StaticHosts.md +26 -0
- data/docs/Providers/StaticRoutes.md +37 -0
- data/docs/Providers/UserAuths.md +32 -0
- data/docs/Providers/Users.md +122 -0
- data/docs/Providers/Vlans.md +43 -0
- data/docs/Providers_Resources.md +353 -0
- data/docs/README_FIRST.md +27 -0
- data/docs/Utils/Config.md +160 -0
- data/docs/Utils/Filesystem.md +360 -0
- data/docs/Utils/Routing-Engine.md +379 -0
- data/docs/Utils/SCP.md +24 -0
- data/examples/config/config_file.rb +72 -0
- data/examples/config/config_template_object.rb +81 -0
- data/examples/config/config_template_simple.rb +76 -0
- data/examples/config/multi_config.rb +60 -0
- data/examples/fs_utils.rb +31 -0
- data/examples/lag_port.rb +27 -0
- data/examples/re_upgrade.rb +99 -0
- data/examples/re_utils.rb +33 -0
- data/examples/simple.rb +46 -0
- data/examples/st_hosts.rb +33 -0
- data/examples/user.rb +32 -0
- data/examples/vlans.rb +31 -0
- data/junos-ez-stdlib.gemspec +15 -0
- data/lib/junos-ez/exceptions.rb +3 -0
- data/lib/junos-ez/facts.rb +83 -0
- data/lib/junos-ez/facts/chassis.rb +51 -0
- data/lib/junos-ez/facts/ifd_style.rb +17 -0
- data/lib/junos-ez/facts/personality.rb +25 -0
- data/lib/junos-ez/facts/switch_style.rb +31 -0
- data/lib/junos-ez/facts/version.rb +58 -0
- data/lib/junos-ez/group.rb +206 -0
- data/lib/junos-ez/ip_ports.rb +30 -0
- data/lib/junos-ez/ip_ports/classic.rb +188 -0
- data/lib/junos-ez/l1_ports.rb +121 -0
- data/lib/junos-ez/l1_ports/classic.rb +87 -0
- data/lib/junos-ez/l1_ports/switch.rb +134 -0
- data/lib/junos-ez/l2_ports.rb +66 -0
- data/lib/junos-ez/l2_ports/bridge_domain.rb +499 -0
- data/lib/junos-ez/l2_ports/vlan.rb +433 -0
- data/lib/junos-ez/l2_ports/vlan_l2ng.rb +502 -0
- data/lib/junos-ez/lag_ports.rb +268 -0
- data/lib/junos-ez/provider.rb +619 -0
- data/lib/junos-ez/stdlib.rb +18 -0
- data/lib/junos-ez/system.rb +48 -0
- data/lib/junos-ez/system/st_hosts.rb +92 -0
- data/lib/junos-ez/system/st_routes.rb +159 -0
- data/lib/junos-ez/system/syscfg.rb +103 -0
- data/lib/junos-ez/system/userauths.rb +84 -0
- data/lib/junos-ez/system/users.rb +217 -0
- data/lib/junos-ez/utils/config.rb +236 -0
- data/lib/junos-ez/utils/fs.rb +385 -0
- data/lib/junos-ez/utils/re.rb +558 -0
- data/lib/junos-ez/version.rb +6 -0
- data/lib/junos-ez/vlans.rb +38 -0
- data/lib/junos-ez/vlans/bridge_domain.rb +89 -0
- data/lib/junos-ez/vlans/vlan.rb +119 -0
- data/lib/junos-ez/vlans/vlan_l2ng.rb +126 -0
- data/shipit.yml +4 -0
- data/tmp +7 -0
- metadata +129 -0
@@ -0,0 +1,61 @@
|
|
1
|
+
# Junos::Ez::Group::Provider
|
2
|
+
|
3
|
+
Manages JUNOS group properties
|
4
|
+
|
5
|
+
# EXAMPLE
|
6
|
+
|
7
|
+
The provider *name* selector is the JUNOS group name, e.g. "service_group".
|
8
|
+
|
9
|
+
```ruby
|
10
|
+
Junos::Ez::Group::Provider( ndev, :group )
|
11
|
+
|
12
|
+
grp = ndev.group["service_group"]
|
13
|
+
|
14
|
+
grp[:format] = 'set'
|
15
|
+
grp[:path] = 'services.set'
|
16
|
+
|
17
|
+
grp.write!
|
18
|
+
|
19
|
+
```
|
20
|
+
|
21
|
+
# PROPERTIES
|
22
|
+
|
23
|
+
- `:format` - JUNOS configuration format is file. It can be 'xml', 'text' or 'set'. Default is 'xml'
|
24
|
+
- `:path` - Path of configuration file that is applied inside JUNOS group hierarchy.
|
25
|
+
|
26
|
+
# METHODS
|
27
|
+
|
28
|
+
No additional methods at this time ...
|
29
|
+
|
30
|
+
# USAGE NOTES
|
31
|
+
|
32
|
+
Contents of 'service.set' file
|
33
|
+
|
34
|
+
````
|
35
|
+
% cat services.set
|
36
|
+
set system services ftp
|
37
|
+
set system services ssh
|
38
|
+
set system services netconf ssh
|
39
|
+
````
|
40
|
+
|
41
|
+
JUNOS group configuration reflected on executing above example.
|
42
|
+
|
43
|
+
````
|
44
|
+
{master}[edit]
|
45
|
+
junos@switch# show groups service_group
|
46
|
+
system {
|
47
|
+
services {
|
48
|
+
ftp;
|
49
|
+
ssh;
|
50
|
+
netconf {
|
51
|
+
ssh;
|
52
|
+
}
|
53
|
+
}
|
54
|
+
}
|
55
|
+
|
56
|
+
junos@switch# show apply-groups
|
57
|
+
apply-groups [ global re0 re1 service_group ];
|
58
|
+
|
59
|
+
````
|
60
|
+
|
61
|
+
|
@@ -0,0 +1,61 @@
|
|
1
|
+
# Junos::Ez::IPports::Provider
|
2
|
+
|
3
|
+
Manages IPv4 ports. For now, ports recognized are:
|
4
|
+
|
5
|
+
- Fast Ethernet: `fe-*`
|
6
|
+
- Gigabit Ethernet: `ge-*`
|
7
|
+
- 10 Gigabit Ethernet: `xe-*`
|
8
|
+
|
9
|
+
IPv6 ports are a different provider (comming soon...)
|
10
|
+
|
11
|
+
# USAGE
|
12
|
+
|
13
|
+
The provider *name* selector is the interface. If the *name* does not include the ".0" unit, the framework will default to this.
|
14
|
+
|
15
|
+
```ruby
|
16
|
+
Junos::Ez::IPports::Provider( ndev, :ip_ports )
|
17
|
+
|
18
|
+
port = ndev.ip_ports["ge-0/0/8"]
|
19
|
+
|
20
|
+
puts "IPv4 port #{port.name} does not exist!" unless port.exists?
|
21
|
+
```
|
22
|
+
|
23
|
+
# PROPERTIES
|
24
|
+
|
25
|
+
- `:admin` - [:up, :down] - administrative control of the port
|
26
|
+
- `:description` - String, description assigned at the interface unit level
|
27
|
+
- `:tag_id` - Fixnum, used if the phyiscal port is vlan-tagging (but not L2port)
|
28
|
+
- `:mtu` - Fixnum, MTU value assigned for IP packets (but not L1port MTU)
|
29
|
+
- `:address` - String in "ip/prefix" format. For example "192.168.10.12/24"
|
30
|
+
- `:acl_in` - Name of input ACL (firewall-filter)
|
31
|
+
- `:acl_out` - Name of output ACL
|
32
|
+
|
33
|
+
# METHODS
|
34
|
+
|
35
|
+
## status
|
36
|
+
|
37
|
+
Returns a Hash of status information about the IP unit interface.
|
38
|
+
```ruby
|
39
|
+
port = ndev.ip_ports["ge-0/0/8.0"]
|
40
|
+
|
41
|
+
# display the configuration information
|
42
|
+
pp port.to_h
|
43
|
+
->
|
44
|
+
{"ge-0/0/8.0"=>
|
45
|
+
{:_active=>true,
|
46
|
+
:_exist=>true,
|
47
|
+
:admin=>:up,
|
48
|
+
:description=>"this is port8",
|
49
|
+
:address=>"192.168.100.1/24",
|
50
|
+
:acl_in=>"foo",
|
51
|
+
:acl_out=>"bar"}}
|
52
|
+
|
53
|
+
# display the status information
|
54
|
+
pp port.status
|
55
|
+
->
|
56
|
+
{:l1_oper_status=>:up,
|
57
|
+
:oper_status=>:up,
|
58
|
+
:snmp_index=>522,
|
59
|
+
:packets_rx=>0,
|
60
|
+
:packets_tx=>18}
|
61
|
+
```
|
@@ -0,0 +1,29 @@
|
|
1
|
+
# Junos::Ez::L1ports::Provider
|
2
|
+
|
3
|
+
Manages the physical properties of interfaces.
|
4
|
+
|
5
|
+
# USAGE
|
6
|
+
|
7
|
+
The provider *name* selector is the interface name.
|
8
|
+
|
9
|
+
```ruby
|
10
|
+
Junos::Ez::L1ports::Provider( ndev, :l1_ports )
|
11
|
+
|
12
|
+
port = ndev.l1_ports["ge-0/0/12"]
|
13
|
+
|
14
|
+
port[:admin] = :down
|
15
|
+
port.write!
|
16
|
+
```
|
17
|
+
|
18
|
+
# PROPERTIES
|
19
|
+
|
20
|
+
- `:admin` - [:up, :down] - administratively controls the port
|
21
|
+
- `:description` - String, description applied at the physical port
|
22
|
+
- `:mtu` - Fixnum, MTU value applied at the physical port
|
23
|
+
- `:speed` - Link Speed, [:auto, '10m', '100m', '1g', 10g']
|
24
|
+
- `:duplex` - Link Duplex, [:auto, :half, :full]
|
25
|
+
- `:unit_count` - **READ-ONLY** indicates the number of logical ports (units) configured
|
26
|
+
|
27
|
+
# METHODS
|
28
|
+
|
29
|
+
No additional methods at this time ...
|
@@ -0,0 +1,43 @@
|
|
1
|
+
# Junos::Ez::L2ports::Provider
|
2
|
+
|
3
|
+
Manages the ethernet switch ports. The primary function is to associate switching ports to VLANs.
|
4
|
+
|
5
|
+
Currently the association of VLANS to ports is read/write under the interfaces stanza. Junos OS also supports
|
6
|
+
the association under the VLAN resource stanza (vlans/bridge-domains).
|
7
|
+
|
8
|
+
_NOTE: this provider does not use the VLAN resource stanza at this time. Under review now. If you have an opionin on this, please let us know, thank you!_
|
9
|
+
|
10
|
+
# USAGE
|
11
|
+
|
12
|
+
The provider *name* is the interface. The framework will assume unit 0 if the name does not indicate one.
|
13
|
+
|
14
|
+
```ruby
|
15
|
+
Junos::Ez::L2ports::Provider( ndev, l2_ports )
|
16
|
+
|
17
|
+
port = ndev.l2_ports["ge-0/0/12"]
|
18
|
+
|
19
|
+
puts "port #{port.name} is not a switch-port!" unless port.exists?
|
20
|
+
```
|
21
|
+
|
22
|
+
# PROPERTIES
|
23
|
+
|
24
|
+
- `:description` - String description at the logical interface level
|
25
|
+
- `:untagged_vlan` - String, VLAN-name for packets without VLAN tags
|
26
|
+
- `:tagged_vlans` - Set of VLAN-names for packets with VLAN tags
|
27
|
+
- `:vlan_tagging` - [true | false] - indicates if this port accepts packets with VLAN tags
|
28
|
+
|
29
|
+
# METHODS
|
30
|
+
|
31
|
+
No additional methods at this time ...
|
32
|
+
|
33
|
+
# SUPPORTED PLATFORMS
|
34
|
+
|
35
|
+
- EX2200, EX3200, EX3300, EX4200, EX4500, EX4550, EX6100, EX8200
|
36
|
+
- SRX branch: **entire product line, but not vSRX**
|
37
|
+
- QFX3500, QFX3600
|
38
|
+
|
39
|
+
Comming soon:
|
40
|
+
|
41
|
+
- EX platforms released in 2013
|
42
|
+
- MX5, MX10, MX40, MX80, MX240, MX480, MX960
|
43
|
+
|
@@ -0,0 +1,57 @@
|
|
1
|
+
# Junos::Ez::LAGports::Provider
|
2
|
+
|
3
|
+
Manages Link Aggregation Group (LAG) port properties
|
4
|
+
|
5
|
+
# EXAMPLE
|
6
|
+
|
7
|
+
The provider *name* selector is the interface name, e.g. "ae0".
|
8
|
+
|
9
|
+
```ruby
|
10
|
+
Junos::Ez::LAGports::Provider( ndev, :lags )
|
11
|
+
|
12
|
+
port = ndev.lags["ae0"]
|
13
|
+
|
14
|
+
port[:links] = ["ge-0/0/0", "ge-0/0/1", "ge-0/0/2", "ge-0/0/3"]
|
15
|
+
port[:lacp] = :active
|
16
|
+
port[:minimum_links] = 2
|
17
|
+
|
18
|
+
port.write!
|
19
|
+
```
|
20
|
+
|
21
|
+
# PROPERTIES
|
22
|
+
|
23
|
+
- `:links` - Set of interface names
|
24
|
+
- `:lacp` - [:active, :passive, :disabled], :disabled is default
|
25
|
+
- `:minimum_links` - number of interfaces that must be active for LAG to be declared 'up'
|
26
|
+
|
27
|
+
# METHODS
|
28
|
+
|
29
|
+
No additional methods at this time ...
|
30
|
+
|
31
|
+
# USAGE NOTES
|
32
|
+
|
33
|
+
### Allocating Aggregated Ethernet (AE) Ports in Junos
|
34
|
+
|
35
|
+
Before using LAG ports, you must first configured the "aggregated ethernet ports" device count in Junos. This is done under the `[edit chassis]` stanza as shown:
|
36
|
+
|
37
|
+
````
|
38
|
+
{master:0}[edit chassis]
|
39
|
+
jeremy@switch# show
|
40
|
+
aggregated-devices {
|
41
|
+
ethernet {
|
42
|
+
device-count 10;
|
43
|
+
}
|
44
|
+
}
|
45
|
+
````
|
46
|
+
|
47
|
+
### Changing the Links Property
|
48
|
+
|
49
|
+
The `:links` property is internally managed as a Ruby Set. When modifing the `:links` property you must use an Array notation, even if you are simply adding or removing one link. For example:
|
50
|
+
|
51
|
+
````ruby
|
52
|
+
port = ndev.lags["ae0"]
|
53
|
+
|
54
|
+
port[:links] += ["ge-0/0/15"]
|
55
|
+
port.write!
|
56
|
+
````
|
57
|
+
|
@@ -0,0 +1,26 @@
|
|
1
|
+
# Junos::Ez::StaticHosts::Provider
|
2
|
+
|
3
|
+
Manages locally configured host-name to IPv4 & IPv6 address mapping
|
4
|
+
|
5
|
+
# USAGE
|
6
|
+
|
7
|
+
The provider *name* is the host-name as it would have been configured under `[edit system static-host-mapping]`
|
8
|
+
|
9
|
+
```ruby
|
10
|
+
Junos::Ez::StaticHosts::Provider( ndev, :etc_hosts )
|
11
|
+
|
12
|
+
host = ndev.etc_hosts["ex4.jeremylab.net"]
|
13
|
+
host[:ip] = "192.168.10.24"
|
14
|
+
host.write!
|
15
|
+
```
|
16
|
+
|
17
|
+
# PROPERITES
|
18
|
+
|
19
|
+
- `:ip` - The IPv4 address
|
20
|
+
- `:ip6` - The IPv6 address
|
21
|
+
|
22
|
+
_NOTE: A host entry **can** have both IPv4 and IPv6 addresses assigned at the same time_
|
23
|
+
|
24
|
+
# METHODS
|
25
|
+
|
26
|
+
No additional methods at this time ...
|
@@ -0,0 +1,37 @@
|
|
1
|
+
# Junos::Ez::StaticRoutes::Provider
|
2
|
+
|
3
|
+
Manages static route entries.
|
4
|
+
|
5
|
+
_NOTE: for now, routing-instances are not supported, but under review for upcoming release..._
|
6
|
+
|
7
|
+
# USAGE
|
8
|
+
|
9
|
+
The provider *name* is the target-route. If you want to specify the default-route, you can either use "0.0.0.0/0" or the special name `:default`.
|
10
|
+
|
11
|
+
```ruby
|
12
|
+
Junos::Ez::StaticRoutes::Provider( ndev, :route )
|
13
|
+
|
14
|
+
default = ndev.route[:default]
|
15
|
+
|
16
|
+
unless default.exists?
|
17
|
+
default[:gateway] = "192.168.1.1"
|
18
|
+
default.write!
|
19
|
+
end
|
20
|
+
```
|
21
|
+
|
22
|
+
# PROPERTIES
|
23
|
+
|
24
|
+
- `:gateway` - The next-hop gateway. Could be single String or Array-of-Strings
|
25
|
+
- `:metic` - The metric assigned to this route, Fixnum
|
26
|
+
- `:action` - Configures the route action, [:reject, :discard, :receive]
|
27
|
+
- `:active` - Configures the route active, [true, false, nil]
|
28
|
+
- `:retain` - Configures the ratain/no-retain flag, [ nil, true, false ]
|
29
|
+
- `:install` - Configures the install/no-install flag, [nil, true, false ]
|
30
|
+
- `:readvertise` - Configures the readvertise/no-readvertise flag, [nil, true, false]
|
31
|
+
- `:resovlve` - Configures the resolve/no-resolve falg, [nil, true, false]
|
32
|
+
|
33
|
+
In the above "flag controls", assigning the values [true | false] configures if the flat is set or "no-" set respectively. To delete the flag from the configuration, set the property to `nil`.
|
34
|
+
|
35
|
+
# METHODS
|
36
|
+
|
37
|
+
No additional methods at this time ...
|
@@ -0,0 +1,32 @@
|
|
1
|
+
# Junos::Ez::UserAuths::Provider
|
2
|
+
|
3
|
+
Manages user account ssh-keys, RSA or DSA.
|
4
|
+
|
5
|
+
# USAGE
|
6
|
+
|
7
|
+
The provider *name* for accessing the provider is a Hash comprised of the following key/value pairs:
|
8
|
+
|
9
|
+
- `:user` - String, user-name
|
10
|
+
- `:keytype` - String, one of ['ssh-rsa', 'ssh-dsa']
|
11
|
+
- `:publickey` - String, the public key value
|
12
|
+
|
13
|
+
```ruby
|
14
|
+
|
15
|
+
# bind :auths for managing ssh-keys directly
|
16
|
+
|
17
|
+
Junos::Ez::UserAuths::Provider( ndev, :auths )
|
18
|
+
|
19
|
+
# setup a name Hash to access this key
|
20
|
+
|
21
|
+
key_name = {}
|
22
|
+
key_name[:user] = "jeremy"
|
23
|
+
key_name[:keytype] = "ssh-rsa"
|
24
|
+
key_name[:publickey] = "ssh-rsa gibberishMagicSwingDeadCatoverHeadand_LetMeLoginFoo"
|
25
|
+
|
26
|
+
ssh_key = ndev.auths[ key_name ]
|
27
|
+
|
28
|
+
puts "Key does not exist" unless ssh_key.exists?
|
29
|
+
```
|
30
|
+
|
31
|
+
Generally speaking, you probably won't be using this provider directly, but rather using a
|
32
|
+
`Junos::Ez::Users::Provider` resource and the `load_ssh_key!` method. This method makes use of the `Junos::Ez::UserAuths::Provider` internally.
|
@@ -0,0 +1,122 @@
|
|
1
|
+
# Junos::Ez::Users::Provider
|
2
|
+
|
3
|
+
Manages the on-target configured users, located under Junos `[edit system login]` stanza.
|
4
|
+
|
5
|
+
# USAGE
|
6
|
+
|
7
|
+
The provider *name* selector is the user-name String.
|
8
|
+
|
9
|
+
```ruby
|
10
|
+
|
11
|
+
# bind :users to provide access to the local login configuration
|
12
|
+
|
13
|
+
Junos::Ez::Users::Provider( ndev, :users )
|
14
|
+
|
15
|
+
user = ndev.users["jeremy"]
|
16
|
+
|
17
|
+
puts "#{user.name} does not exist!" unless user.exists?
|
18
|
+
```
|
19
|
+
|
20
|
+
# PROPERTIES
|
21
|
+
|
22
|
+
- `:class` - String, The user priviledge class (like "read-only", or "super-user")
|
23
|
+
- `:uid` - Number, User ID (unix). If not provided, Junos will auto-create
|
24
|
+
- `:fullname` - String, User Full Name
|
25
|
+
- `:password` - Junos encrypted password
|
26
|
+
- `:ssh_keys` - SSH keys (READ/ONLY)
|
27
|
+
|
28
|
+
If you need to modify the user's ssh-keys, see the `load_ssh_key!` method in the next section.
|
29
|
+
|
30
|
+
|
31
|
+
|
32
|
+
# RESOURCE METHODS
|
33
|
+
|
34
|
+
## password=
|
35
|
+
|
36
|
+
Used to set the user password by providing a plain-text value.
|
37
|
+
```ruby
|
38
|
+
|
39
|
+
Junos::Ez::User::Provider( ndev, :users )
|
40
|
+
|
41
|
+
pp ndev.users.list
|
42
|
+
->
|
43
|
+
["goofy", "jeremy"]
|
44
|
+
|
45
|
+
user = ndev.users["goofy"]
|
46
|
+
user.to_h
|
47
|
+
->
|
48
|
+
{"goofy"=>
|
49
|
+
{:_active=>true,
|
50
|
+
:_exist=>true,
|
51
|
+
:uid=>"3000",
|
52
|
+
:class=>"read-only",
|
53
|
+
:password=>"XRykM8Grm0R0A"}}
|
54
|
+
|
55
|
+
# set the password with plaintext value, then re-read the config from the device
|
56
|
+
user.password = "n3wpassw0rd"
|
57
|
+
user.read!
|
58
|
+
|
59
|
+
user.to_h
|
60
|
+
->
|
61
|
+
{"goofy"=>
|
62
|
+
{:_active=>true,
|
63
|
+
:_exist=>true,
|
64
|
+
:uid=>"3000",
|
65
|
+
:class=>"read-only",
|
66
|
+
:password=>"W05ckLnjLcPCk"}}
|
67
|
+
```
|
68
|
+
## load_ssh_key!( :opts = {} )
|
69
|
+
|
70
|
+
opts[:publickey] - String of public-key
|
71
|
+
opts[:filename] - String, filename on server to public-key file
|
72
|
+
|
73
|
+
This method will create an ssh-key for the user based on the contents of the provided public key. The key will be written to the device, but not committed (just like resource write!). The `Junos::Ez::UserAuths::Provider` resource for this key will be returned.
|
74
|
+
|
75
|
+
```ruby
|
76
|
+
user = ndev.users["jeremy"]
|
77
|
+
pp user.to_h
|
78
|
+
->
|
79
|
+
{"jeremy"=>
|
80
|
+
{:_active=>true,
|
81
|
+
:_exist=>true,
|
82
|
+
:uid=>"2008",
|
83
|
+
:class=>"super-user",
|
84
|
+
:password=>"$1$JhZms6TE$dXF8P1ey1u3G.5j/V9FBk0"}}
|
85
|
+
|
86
|
+
# write the key and then re-load user object
|
87
|
+
user.load_ssh_key! :filename=>'/home/jschulman/.ssh/keys/key1.pub'
|
88
|
+
user.read!
|
89
|
+
pp user.to_h
|
90
|
+
->
|
91
|
+
{"jeremy"=>
|
92
|
+
{:_active=>true,
|
93
|
+
:_exist=>true,
|
94
|
+
:uid=>"2008",
|
95
|
+
:class=>"super-user",
|
96
|
+
:password=>"$1$JhZms6TE$dXF8P1ey1u3G.5j/V9FBk0",
|
97
|
+
:ssh_keys=>
|
98
|
+
{"ssh-rsa"=>
|
99
|
+
["ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDIpOXEUJFfHstdDjVEaTIf5YkTbUliSel6/dsNe"]}}}
|
100
|
+
```
|
101
|
+
## ssh_key( keytype, index = 0 )
|
102
|
+
keytype: ['ssh-rsa', 'ssh-dsa']
|
103
|
+
|
104
|
+
This method will return a formulate name Hash for the specified key. This name can then be used in conjunction
|
105
|
+
with the `Junos::Ez::UserAuth::Provider` class.
|
106
|
+
|
107
|
+
The `index` parameter is used to select a key in the event that there is more than one in use.
|
108
|
+
|
109
|
+
```ruby
|
110
|
+
key_name = user.ssh_key( 'ssh-rsa' )
|
111
|
+
->
|
112
|
+
{:user=>"jeremy",
|
113
|
+
:keytype=>"ssh-rsa",
|
114
|
+
:publickey=>
|
115
|
+
"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDIpOXEUJFfHstdDjVEaTIf5YkTbUliSel6/dsNe"}
|
116
|
+
|
117
|
+
# bind :auths as so we can directly access ssh-keys ...
|
118
|
+
Junos::Ez::UserAuths::Provider( ndev, :auths )
|
119
|
+
|
120
|
+
# now delete the key from the user.
|
121
|
+
ndev.auths[ key_name ].delete!
|
122
|
+
```
|