Skip to content

Commit

Permalink
provisioner: Add autoyast self update option
Browse files Browse the repository at this point in the history
AutoYaST can update itself before installing the OS. This patch enables
this feature and adds a field to the provisioner barclamp so that a
repository URL can be set by the user. The special token `<ADMINWEB>` resolves
to the IP:port of the admin node. An empty URL defaults to the SUSE
customer center (scc.suse.com).
  • Loading branch information
nicolasbock committed Dec 13, 2016
1 parent bc8f677 commit f3afca5
Show file tree
Hide file tree
Showing 7 changed files with 36 additions and 1 deletion.
4 changes: 4 additions & 0 deletions chef/cookbooks/provisioner/recipes/update_nodes.rb
Original file line number Diff line number Diff line change
Expand Up @@ -310,6 +310,7 @@ def find_node_boot_mac_addresses(node, admin_data_net)
append << "ifcfg=dhcp4 netwait=60"
append << "squash=0" # workaround bsc#962397
append << "autoupgrade=1" if mnode[:state] == "os-upgrading"
append << "self_update"

target_platform_distro = os.gsub(/-.*$/, "")
target_platform_version = os.gsub(/^.*-/, "")
Expand Down Expand Up @@ -353,6 +354,9 @@ def find_node_boot_mac_addresses(node, admin_data_net)
web_port: web_port,
packages: packages,
repos: repos,
self_update_url: node[:provisioner][:self_update_url].gsub(
"<ADMINWEB>", "#{admin_ip}:#{web_port}"
),
rootpw_hash: node[:provisioner][:root_password_hash] || "",
timezone: timezone,
boot_device: (mnode[:crowbar_wall][:boot_device] rescue nil),
Expand Down
17 changes: 17 additions & 0 deletions chef/cookbooks/provisioner/templates/default/autoyast.xml.erb
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,24 @@
<import_gpg_key config:type="boolean">true</import_gpg_key>
</signature-handling>
<storage/>
<% unless @self_update_url.nil? || @self_update_url.empty? -%>
<self_update_url>
<%= @self_update_url %>
</self_update_url>
<% end -%>
</general>
<report>
<errors>
<log config:type="boolean">true</log>
<show config:type="boolean">true</show>
<timeout config:type="integer">10</timeout>
</errors>
<warnings>
<log config:type="boolean">true</log>
<show config:type="boolean">true</show>
<timeout config:type="integer">10</timeout>
</warnings>
</report>
<add-on>
<add_on_products config:type="list">
<% @repos.keys.sort.each do |name| %>
Expand Down
9 changes: 9 additions & 0 deletions chef/data_bags/crowbar/migrate/provisioner/103_self_update.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
def upgrade(ta, td, a, d)
a["self_update_url"] = ta["self_update_url"]
return a, d
end

def downgrade(ta, td, a, d)
delete a["self_update_url"]
return a, d
end
3 changes: 2 additions & 1 deletion chef/data_bags/crowbar/template-provisioner.json
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
"access_keys": "",
"shell_prompt": "USER@HOST:CWD SUFFIX",
"enable_pxe": true,
"self_update_url": "http://<ADMINWEB>/suse-12.2/$arch/repos/installer-update",
"discovery": {
"append": ""
},
Expand Down Expand Up @@ -200,7 +201,7 @@
"provisioner": {
"crowbar-revision": 0,
"crowbar-applied": false,
"schema-revision": 102,
"schema-revision": 103,
"element_states": {
"provisioner-server": [ "readying", "ready", "applying" ],
"provisioner-base": [ "hardware-installing", "readying", "ready", "applying" ]
Expand Down
1 change: 1 addition & 0 deletions chef/data_bags/crowbar/template-provisioner.schema
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
"access_keys": { "type": "str", "required": true },
"shell_prompt": { "type": "str", "required": true },
"enable_pxe": { "type": "bool", "required": true },
"self_update_url": { "type": "str", "required": true },
"web_port": { "type": "int", "required": true },
"keep_existing_hostname": { "type": "bool", "required": true },
"timezone": { "type": "str", "required": true },
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@
%span.help-block
= t(".access_keys_hint")

= string_field :self_update_url

= string_field :shell_prompt
%span.help-block
= t(".shell_prompt_hint")
Expand Down
1 change: 1 addition & 0 deletions crowbar_framework/config/locales/provisioner/en.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ en:
edit_attributes:
access_keys: 'Additional SSH keys'
access_keys_hint: 'Each SSH key must be on its own line'
self_update_url: 'AutoYaST Self-update URL (The alias <ADMINWEB> can be used to specify the admin server)'
shell_prompt: 'Custom Shell Prompt'
shell_prompt_hint: 'You can use the placeholders USER, ALIAS, HOST, FQDN, CWD and SUFFIX to customize the shell prompt on all nodes. Add a \n for a new line within the prompt.'
serial_console: 'Serial Console'
Expand Down

0 comments on commit f3afca5

Please sign in to comment.