mirror of
				https://github.com/linuxkit/linuxkit.git
				synced 2025-10-31 05:52:56 +00:00 
			
		
		
		
	This package handles meta and user data for different cloud and other platforms. It should be easy to extend to new platforms. Currently, it handles GCP metadata and a simple CDROM userdata provider. Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
		
			
				
	
	
		
			71 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			71 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| # Metadata and Userdata handling
 | |
| 
 | |
| Most providers offer a mechanism to provide a OS with some additional
 | |
| metadata as well as custom userdata. `Metadata` in this context is
 | |
| fixed information provided by the provider (e.g. the host
 | |
| name). `Userdata` is completely custom data which a user can supply to
 | |
| the instance.
 | |
| 
 | |
| The [metadata package](../pkg/metadata/) handles both metadata and
 | |
| userdata for a number of providers (see below).  It abstracts over the
 | |
| provider differences by exposing both metadata and userdata in a
 | |
| directory hierarchy under `/var/config`.  For example, sshd config
 | |
| files from the metadata are placed under `/var/config/ssh`.
 | |
| 
 | |
| Userdata is assumed to be a single string and the contents will be
 | |
| stored under `/var/config/userdata`.  If userdata is a json file, the
 | |
| contents will be further processed, where different keys cause
 | |
| directories to be created and the directories are populated with files. Foer example, the following userdata file:
 | |
| ```
 | |
| {
 | |
|     "ssh" : {
 | |
|         "sshd_config" : {
 | |
|             "perm" : "0600",
 | |
|             "content": "PermitRootLogin yes\nPasswordAuthentication no"
 | |
|         }
 | |
|     },
 | |
|     "foo" : {
 | |
|         "bar" : {
 | |
|             "perm": "0644",
 | |
|             "content": "foobar"
 | |
|         },
 | |
|         "baz" : {
 | |
|             "perm": "0600",
 | |
|             "content": "bar"
 | |
|         }
 | |
|     }
 | |
| }
 | |
| ```
 | |
| will generate the following files:
 | |
| ```
 | |
| /var/config/ssh/sshd_config
 | |
| /var/config/foo/bar
 | |
| /var/config/foo/baz
 | |
| ```
 | |
| 
 | |
| This hierarchy can then be used by individual containers, who can bind
 | |
| mount the config sub-directory into their namespace where it is
 | |
| needed.
 | |
| 
 | |
| 
 | |
| # Providers
 | |
| 
 | |
| Below is a list of supported providers and notes on what is supported. We will add more over time.
 | |
| 
 | |
| 
 | |
| ## GCP
 | |
| 
 | |
| GCP metadata is reached via a well known URL
 | |
| (`http://metadata.google.internal/`) and currently
 | |
| we extract the hostname and populate the
 | |
| `/var/config/ssh/authorized_keys` from metadata. In the future we'll
 | |
| add more complete SSH support.
 | |
| 
 | |
| GCP userdata is extracted from `/computeMetadata/v1/instance/attributes/userdata`.
 | |
| 
 | |
| 
 | |
| ## HyperKit
 | |
| 
 | |
| HyperKit does not support metadata and userdata is passed in as a single file via a ISO9660 image.
 | |
| 
 |