Skip to content

Commit d908f5d

Browse files
authored
Merge pull request #651 from oschusler/feature/add-join-token-facts
Add docker swarm join-tokens as facts
2 parents e7e80dc + 8cac029 commit d908f5d

File tree

6 files changed

+58
-7
lines changed

6 files changed

+58
-7
lines changed

CONTRIBUTORS.md

+1
Original file line numberDiff line numberDiff line change
@@ -184,3 +184,4 @@
184184
1 Geoff Meakin
185185
1 Joshua Spence
186186
1 Justin Riley
187+
1 Schusler, Olaf

README.md

+7-7
Original file line numberDiff line numberDiff line change
@@ -759,21 +759,21 @@ To configure the swarm worker, add the following code to the manifest file:
759759

760760
```puppet
761761
docker::swarm {'cluster_worker':
762-
join => true,
763-
advertise_addr => '192.168.1.2',
764-
listen_addr => '192.168.1.2',
765-
manager_ip => '192.168.1.1',
766-
token => 'your_join_token'
762+
join => true,
763+
advertise_addr => '192.168.1.2',
764+
listen_addr => '192.168.1.2',
765+
manager_ip => '192.168.1.1',
766+
token => 'your_join_token'
767767
}
768768
```
769769

770-
To configure a worker node or a second manager, include the swarm manager IP address in the `manager_ip` parameter. To define the role of the node in the cluster, include the `token` parameter. When creating an additional swarm manager and a worker node, separate tokens are required.
770+
To configure a worker node or a second manager, include the swarm manager IP address in the `manager_ip` parameter. To define the role of the node in the cluster, include the `token` parameter. When creating an additional swarm manager and a worker node, separate tokens are required. These tokens (i.e. `docker_worker_join_token` and `docker_manager_join_token`) can be retrieved from Facter.
771771

772772
To remove a node from a cluster, add the following code to the manifest file:
773773

774774
```puppet
775775
docker::swarm {'cluster_worker':
776-
ensure => absent
776+
ensure => absent
777777
}
778778
```
779779

lib/facter/docker.rb

+22
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,28 @@ def interfaces
7777
end
7878
end
7979

80+
Facter.add(:docker_worker_join_token) do
81+
setcode do
82+
if Facter::Util::Resolution.which('docker')
83+
val = Facter::Util::Resolution.exec(
84+
"#{docker_command} swarm join-token worker -q",
85+
)
86+
end
87+
val
88+
end
89+
end
90+
91+
Facter.add(:docker_manager_join_token) do
92+
setcode do
93+
if Facter::Util::Resolution.which('docker')
94+
val = Facter::Util::Resolution.exec(
95+
"#{docker_command} swarm join-token manager -q",
96+
)
97+
end
98+
val
99+
end
100+
end
101+
80102
Facter.add(:docker) do
81103
setcode do
82104
docker_version = Facter.value(:docker_client_version)
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
SWMTKN-1-2m7ekt7511j5kgrc6seyrewpdxv47ksz1sdg7iybzhuug6nmws-8gh1ns1lcavgau8k9p6ou7xj3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
SWMTKN-1-2m7ekt7511j5kgrc6seyrewpdxv47ksz1sdg7iybzhuug6nmws-0jh0syqeoj3tlr81p165ydfkm

spec/unit/lib/facter/docker_spec.rb

+26
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,10 @@
2525
inspect = File.read(fixtures('facts', "docker_network_inspect_#{network}"))
2626
Facter::Util::Resolution.stubs(:exec).with("#{docker_command} network inspect #{network}").returns(inspect)
2727
end
28+
docker_worker_token = File.read(fixtures('facts', 'docker_swarm_worker_token'))
29+
Facter::Util::Resolution.stubs(:exec).with("#{docker_command} swarm join-token worker -q").returns(docker_worker_token.chomp)
30+
docker_manager_token = File.read(fixtures('facts', 'docker_swarm_manager_token'))
31+
Facter::Util::Resolution.stubs(:exec).with("#{docker_command} swarm join-token manager -q").returns(docker_manager_token.chomp)
2832
end
2933
after(:each) { Facter.clear }
3034

@@ -94,4 +98,26 @@
9498
)
9599
end
96100
end
101+
102+
describe 'docker swarm worker join-token' do
103+
before :each do
104+
Facter.fact(:interfaces).stubs(:value).returns('br-19a6ebf6f5a5,docker0,eth0,lo')
105+
end
106+
it do
107+
expect(Facter.fact(:docker_worker_join_token).value).to eq(
108+
'SWMTKN-1-2m7ekt7511j5kgrc6seyrewpdxv47ksz1sdg7iybzhuug6nmws-0jh0syqeoj3tlr81p165ydfkm',
109+
)
110+
end
111+
end
112+
113+
describe 'docker swarm manager join-token' do
114+
before :each do
115+
Facter.fact(:interfaces).stubs(:value).returns('br-19a6ebf6f5a5,docker0,eth0,lo')
116+
end
117+
it do
118+
expect(Facter.fact(:docker_manager_join_token).value).to eq(
119+
'SWMTKN-1-2m7ekt7511j5kgrc6seyrewpdxv47ksz1sdg7iybzhuug6nmws-8gh1ns1lcavgau8k9p6ou7xj3',
120+
)
121+
end
122+
end
97123
end

0 commit comments

Comments
 (0)