def run_rancherserver(): # Render teh template cfg = config() render('docker-compose.yml', 'files/rancherserver/docker-compose.yml', cfg) comp = Compose('files/rancherserver') comp.up()
def stop_scope(): compose = Compose('files/scope') compose.kill() compose.rm() hookenv.close_port(4040) reactive.remove_state('scope.started') hookenv.status_set('maintenance', 'Weave stopped.')
def start_cadvisor(): '''Start the cAdvisor container that gives metrics about the other application containers on this system. ''' compose = Compose('files/kubernetes') compose.up('cadvisor') set_state('cadvisor.available') status_set('active', 'cadvisor running on port 8088') hookenv.open_port(8088)
def start_drone(): cfg = config() if not cfg.get('github_secret') or not cfg.get('github_client'): status_set('blocked', 'Requires DVCS credentials - see charm config') return render('docker-compose.yml', 'files/drone/docker-compose.yml', {}) render('drone.env', 'files/drone/drone.env', cfg) compose = Compose('files/drone') compose.up() hookenv.open_port(80) status_set('active', 'Drone running.')
def run_ems(): # authenticate to private docker repository d = Docker() cfg = config() d.login(cfg['distribution-user'], cfg['distribution-pass'], cfg['distribution-email']) # Render the template render('docker-compose.yml', 'files/ems/docker-compose.yml', cfg) comp = Compose('files/ems') comp.up()
def start_rabbitmq(): ''' Starts a RabbitMQ application''' # Render the formation cfg = config() render('docker-compose.yml', 'files/rabbitmq/docker-compose.yml', cfg) # Initialize the docker compose object, looking @ our work directory compose = Compose('files/rabbitmq') # Launch the service(s) status_set('maintenance', "Fetching / Starting the rabbitmq containers") compose.up() status_set('active', 'Redmine is running on port 5672, 15672 and 1883')
def start_redmine(): ''' Starts a Redmine application in standalone configuration''' # Render the formation cfg = config() render('docker-compose.yml', 'files/redmine/docker-compose.yml', cfg) # Initialize the docker compose object, looking @ our work directory compose = Compose('files/redmine') # Launch the service(s) status_set('maintenance', "Fetching / Starting the redmine containers") compose.up() status_set('active', 'Redmine is running on port 10030')
def master(etcd): '''Install and run the hyperkube container that starts kubernetes-master. This actually runs the kubelet, which in turn runs a pod that contains the other master components. ''' render_files(etcd) # Use the Compose class that encapsulates the docker-compose commands. compose = Compose('files/kubernetes') status_set('maintenance', 'Starting the Kubernetes kubelet container.') # Start the Kubernetes kubelet container using docker-compose. compose.up('kubelet') set_state('kubelet.available') # Open the secure port for api-server. hookenv.open_port(6443) status_set('maintenance', 'Starting the Kubernetes proxy container') # Start the Kubernetes proxy container using docker-compose. compose.up('proxy') set_state('proxy.available') status_set('active', 'Kubernetes started')
def start_kubelet(etcd): '''Run the hyperkube container that starts the kubernetes services. When the leader, run the master services (apiserver, controller, scheduler, proxy) using the master.json from the rendered manifest directory. When a follower, start the node services (kubelet, and proxy). ''' render_files(etcd) # Use the Compose class that encapsulates the docker-compose commands. compose = Compose('files/kubernetes') status_set('maintenance', 'Starting the Kubernetes services.') if is_leader(): compose.up('master') compose.up('proxy') set_state('kubelet.available') # Open the secure port for api-server. hookenv.open_port(6443) else: # Start the Kubernetes kubelet container using docker-compose. compose.up('kubelet') set_state('kubelet.available') # Start the Kubernetes proxy container using docker-compose. compose.up('proxy') set_state('proxy.available') status_set('active', 'Kubernetes services started')
def config_changed(): '''If the configuration values change, remove the available states.''' config = hookenv.config() if any(config.changed(key) for key in config.keys()): hookenv.log('Configuration options have changed.') # Use the Compose class that encapsulates the docker-compose commands. compose = Compose('files/kubernetes') hookenv.log('Removing kubelet container and kubelet.available state.') # Stop and remove the Kubernetes kubelet container.. compose.kill('kubelet') compose.rm('kubelet') # Remove the state so the code can react to restarting kubelet. remove_state('kubelet.available') hookenv.log('Removing proxy container and proxy.available state.') # Stop and remove the Kubernetes proxy container. compose.kill('proxy') compose.rm('proxy') # Remove the state so the code can react to restarting proxy. remove_state('proxy.available') if config.changed('version'): hookenv.log('Removing kubectl.downloaded state so the new version' ' of kubectl will be downloaded.') remove_state('kubectl.downloaded')
def run_scope(): compose = Compose('files/scope') compose.up() hookenv.open_port(4040) hookenv.status_set('active', 'Weave Started. Visit me on port 4040') reactive.set_state('scope.started')
def start_logspout(): compose = Compose('files/logspout') compose.up() remove_state('logspout.ready') status_set('active', 'Logspout running')