Skip to content

Commit

Permalink
OS-4161 platform image unification
Browse files Browse the repository at this point in the history
HEAD-2079 deprecate sdc-platform.git
  • Loading branch information
jclulow committed Apr 6, 2015
1 parent 928cb7b commit c25ea88
Show file tree
Hide file tree
Showing 26 changed files with 2,419 additions and 48 deletions.
9 changes: 7 additions & 2 deletions Makefile
Expand Up @@ -80,9 +80,9 @@ TOOLS_TARGETS = \

world: 0-extra-stamp 0-illumos-stamp 1-extra-stamp 0-livesrc-stamp \
0-local-stamp 0-tools-stamp 0-man-stamp 0-devpro-stamp \
$(TOOLS_TARGETS)
$(TOOLS_TARGETS) sdcman

live: world manifest boot $(TOOLS_TARGETS)
live: world manifest boot sdcman $(TOOLS_TARGETS)
@echo $(OVERLAY_MANIFESTS)
@echo $(SUBDIR_MANIFESTS)
mkdir -p ${ROOT}/log
Expand Down Expand Up @@ -241,6 +241,10 @@ tools/cryptpass: src/cryptpass.c
tools/mancheck/mancheck: 0-illumos-stamp
(cd tools/mancheck && gmake mancheck CC=$(NATIVE_CC) $(SUBDIR_DEFS))

.PHONY: sdcman
sdcman:
(cd $(ROOT)/man/sdc && gmake install DESTDIR=$(PROTO) $(SUBDIR_DEFS))

jsl: $(JSLINT)

$(JSLINT):
Expand Down Expand Up @@ -270,6 +274,7 @@ clean:
(cd $(ROOT) && mkdir -p $(PROTO) $(STRAP_PROTO) $(BOOT_PROTO))
rm -f tools/cryptpass
(cd tools/mancheck && gmake clean)
(cd man/sdc && gmake clean)
rm -f 0-*-stamp 1-*-stamp

clobber: clean
Expand Down
1 change: 1 addition & 0 deletions man/sdc/.gitignore
@@ -0,0 +1 @@
*.1
32 changes: 32 additions & 0 deletions man/sdc/Makefile
@@ -0,0 +1,32 @@
#
# Copyright 2015 Joyent, Inc.
#

ROOT=$(PWD)
RONNJS=/opt/local/bin/node $(ROOT)/../../tools/ronnjs/bin/ronn.js

MAN1_PAGES = \
sdc-factoryreset

MAN1_FILES = $(MAN1_PAGES:%=%.1)

DESTDIR = ../../proto
PROTO_MAN1_DIR = $(DESTDIR)/smartdc/man/man1
PROTO_MAN1_FILES = $(MAN1_FILES:%=$(PROTO_MAN1_DIR)/%)

all: $(MAN1_FILES)

install: $(PROTO_MAN1_FILES)

$(PROTO_MAN1_DIR)/%: %
mkdir -p $(@D)
rm -f $@
cp $< $@
touch $@

%: %.md
rm -f $@
$(RONNJS) --roff $< > $@

clean:
rm -f $(MAN1_FILES)
33 changes: 33 additions & 0 deletions man/sdc/sdc-factoryreset.1.md
@@ -0,0 +1,33 @@
# sdc-factoryreset(1) -- reset a machine to its originally installed state


## SYNOPSIS

`sdc-factoryreset [-h | --help]`


## DESCRIPTION

This command resets a machine to its originally installed state. Specifically,
it reboots the machine, imports all ZFS pools, and destroys them individually.
It does this by setting a ZFS user property on the system pool.

If this command is invoked unintentionally, an administrator can prevent the
system from resetting itself by booting in rescue mode (noimport=true as a GRUB
boot option) and clearing the smartdc:factoryreset property from the var
dataset. If the system is booting without the noimport=true GRUB option, the
only way to stop the pending factory reset is to power cycle the machine, and
boot again into rescue mode. The service which does the actual factory reset
starts well before an administrator would be able to login to the box, even if
that administrator has console access.


## OPTIONS

`-h`
Show the help and usage mesage


## COPYRIGHT

sdc-factoryreset Copyright (c) 2014, Joyent, Inc.
1 change: 1 addition & 0 deletions overlay/generic/.smartdc_version
@@ -0,0 +1 @@
7.0
4 changes: 4 additions & 0 deletions overlay/generic/etc/cron.d/crontabs/root
Expand Up @@ -4,8 +4,12 @@
0 * * * * /usr/sbin/logadm
## Rotate vm.log files for any KVM VMs
0 * * * * SDC_LOG_ROLL_BACKWARD=1 /usr/vm/sbin/rotate-kvm-logs.sh >> /var/log/rotate-kvm-logs.log 2>&1
## Headnode should phone home nightly.
0 1 * * * [ -x /opt/smartdc/bin/sdc-phonehome ] && /opt/smartdc/bin/sdc-phonehome
## Delete saved core dumps over 7 days old
15 0 * * * find /zones/*/cores -type f -mtime +7 -exec rm -f "{}" \;
## Delete archived zone data over 7 days old
30 0 * * * find /zones/archive/ -mount -maxdepth 1 -mindepth 1 -type d -mtime +7 -exec rm -rf "{}" \;
## Delete logs to be uploaded over 7 days old if they aren't being consumed
45 0 * * * find /var/log/sdc/upload/ -mount -maxdepth 1 -mindepth 1 -type f -mtime +7 -exec rm -f "{}" \;

Expand Down
4 changes: 2 additions & 2 deletions overlay/generic/etc/nsswitch.conf
Expand Up @@ -29,8 +29,8 @@

passwd: files
group: files
hosts: files mdns dns
ipnodes: files mdns dns
hosts: files dns mdns
ipnodes: files dns mdns
networks: files
protocols: files
rpc: files
Expand Down
85 changes: 85 additions & 0 deletions overlay/generic/lib/svc/manifest/system/filesystem/joyent-fs.xml
@@ -0,0 +1,85 @@
<?xml version="1.0"?>
<!DOCTYPE service_bundle SYSTEM "/usr/share/lib/xml/dtd/service_bundle.dtd.1">
<!--
Copyright 2005 Sun Microsystems, Inc. All rights reserved.
Use is subject to license terms.
CDDL HEADER START
The contents of this file are subject to the terms of the
Common Development and Distribution License, Version 1.0 only
(the "License"). You may not use this file except in compliance
with the License.
You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
or http://www.opensolaris.org/os/licensing.
See the License for the specific language governing permissions
and limitations under the License.
When distributing Covered Code, include this CDDL HEADER in each
file and include the License file at usr/src/OPENSOLARIS.LICENSE.
If applicable, add the following below this CDDL HEADER, with the
fields enclosed by brackets "[]" replaced with your own identifying
information: Portions Copyright [yyyy] [name of copyright owner]
CDDL HEADER END
-->

<service_bundle type='manifest' name='SUNWcsr:filesystem-joyent'>

<service
name='system/filesystem/smartdc'
type='service'
version='1'>

<create_default_instance enabled='true' />

<single_instance/>

<dependency
name='usr'
grouping='require_all'
restart_on='none'
type='service'>
<service_fmri value='svc:/system/filesystem/usr' />
</dependency>

<!--
Start method timeout is infinite to handle potentially unbounded
fsck times.
-->
<exec_method
type='method'
name='start'
exec='/lib/svc/method/fs-joyent'
timeout_seconds='0' />

<exec_method
type='method'
name='stop'
exec=':true'
timeout_seconds='0' />

<property_group name='startd' type='framework'>
<propval name='duration' type='astring' value='transient' />
</property_group>
<property_group name='joyentfs' type='application'>
<stability value='Evolving'/>
<propval name='debug' type='boolean' value='false'/>
<propval name='usb_copy_path' type='astring' value='/usbkey'/>
<propval name='usb_mountpoint' type='astring' value='usbkey'/>
</property_group>


<stability value='Unstable' />

<template>
<common_name>
<loctext xml:lang='C'>
Joyent file system mounts
</loctext>
</common_name>
</template>
</service>

</service_bundle>
124 changes: 124 additions & 0 deletions overlay/generic/lib/svc/manifest/system/smartdc-init.xml
@@ -0,0 +1,124 @@
<?xml version="1.0"?>
<!DOCTYPE service_bundle SYSTEM "/usr/share/lib/xml/dtd/service_bundle.dtd.1">
<!--
Copyright 2012 Joyent, Inc. All rights reserved.
Use is subject to license terms.
CDDL HEADER START
The contents of this file are subject to the terms of the
Common Development and Distribution License (the "License").
You may not use this file except in compliance with the License.
You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
or http://www.opensolaris.org/os/licensing.
See the License for the specific language governing permissions
and limitations under the License.
When distributing Covered Code, include this CDDL HEADER in each
file and include the License file at usr/src/OPENSOLARIS.LICENSE.
If applicable, add the following below this CDDL HEADER, with the
fields enclosed by brackets "[]" replaced with your own identifying
information: Portions Copyright [yyyy] [name of copyright owner]
CDDL HEADER END
NOTE: This service manifest is not editable; its contents will
be overwritten by package or patch operations, including
operating system upgrade. Make customizations in a different
file.
-->

<service_bundle type='manifest' name='Joyent:joyent'>

<!--
This service imports the zone's zpool on bootup, before zones try to
start. It also sets up configuration data on that zpool, if necessary.
-->
<service
name='system/smartdc/init'
type='service'
version='1'>

<create_default_instance enabled='true' />

<single_instance />

<!--
dependency info
This depends on the system/zones svc which seems weird since that
svc runs late in boot because it depends on milestone/multi-user-server.
Our svc does the initial setup of the infrastructure zones on the
headnode so we need the system/zones svc to run first so that we can
install and boot the infrastructure zones. The reason this seems
weird is that this svc also sets up the zpool when we first boot,
before we reboot to install the infrastructure zones, so it might seem
like it should run early in boot, but it can't because of the zone
issue described above.
The dependency on network/physical is needed since all of the earlier
svcs which have a dependency on network/physical are using optional_all.
That makes sense for those svcs since they can come up without a
network, but for SmartOS, by this point we require the network to be
there.
-->
<dependency
name='zones'
type='service'
grouping='require_all'
restart_on='none'>
<service_fmri value='svc:/system/zones' />
</dependency>

<dependency
name='net-physical'
type='service'
grouping='require_all'
restart_on='none'>
<service_fmri value='svc:/network/physical' />
</dependency>

<exec_method
type='method'
name='start'
exec='/lib/svc/method/smartdc-init %m'
timeout_seconds='0'>
</exec_method>

<exec_method
type='method'
name='stop'
exec='/lib/svc/method/smartdc-init %m'
timeout_seconds='60'>
</exec_method>

<property_group name='startd' type='framework'>
<propval name='duration' type='astring' value='transient' />
</property_group>

<!--
The zpool holding the zones (this must be imported).
-->
<property_group name='config' type='application'>
<propval name='zpool' type='astring' value='zones' />
</property_group>

<stability value='Unstable' />

<template>
<common_name>
<loctext xml:lang='C'>
Joyent live-image management service
</loctext>
</common_name>
<documentation>
<manpage title='zones' section='5' manpath='/usr/share/man' />
<manpage
title='zpool'
section='1M'
manpath='/usr/share/man' />
</documentation>
</template>
</service>

</service_bundle>
62 changes: 62 additions & 0 deletions overlay/generic/lib/svc/manifest/system/smartdc-ur.xml
@@ -0,0 +1,62 @@
<?xml version="1.0"?>
<!DOCTYPE service_bundle SYSTEM "/usr/share/lib/xml/dtd/service_bundle.dtd.1">
<!--
This Source Code Form is subject to the terms of the Mozilla Public
License, v. 2.0. If a copy of the MPL was not distributed with this
file, You can obtain one at http://mozilla.org/MPL/2.0/.
-->

<!--
Copyright (c) 2014, Joyent, Inc.
-->

<service_bundle type="manifest" name="ur">
<service name="smartdc/agent/ur" type="service" version="0.0.1">

<create_default_instance enabled="true"/>
<single_instance/>

<dependency name="smartdc-init" grouping="require_all" restart_on="error" type="service">
<service_fmri value="svc:/milestone/single-user"/>
</dependency>

<exec_method
type="method"
name="start"
exec="/lib/svc/method/smartdc-ur %m"
timeout_seconds="60">
<method_context>
<method_credential user="root" group="staff"/>
</method_context>
</exec_method>

<exec_method type="method" name="restart" exec=":kill" timeout_seconds="60">
<method_context>
<method_credential user="root" group="staff"/>
</method_context>
</exec_method>

<exec_method type="method" name="stop" exec=":kill" timeout_seconds="60">
<method_context>
<method_credential user="root" group="staff"/>
</method_context>
</exec_method>

<property_group name="startd" type="framework">
<propval name="ignore_error" type="astring" value="core,signal"/>
</property_group>

<property_group name="application" type="application">
</property_group>

<stability value="Evolving"/>

<template>
<common_name>
<loctext xml:lang="C">Ur Agent (node)</loctext>
</common_name>
</template>

</service>

</service_bundle>

0 comments on commit c25ea88

Please sign in to comment.