Developer Quick Start Guide¶
The following is a brief guide on how to deploy a SAS App Engine and prepare it for developing and testing App Engine components in-place.
Installation¶
First, obtain the Installable ISO media. The weekly developer build can be downloaded from the following location: https://sas-app-engine-ci.s3.amazonaws.com/appengine-8-devel-x86_64.iso
Next, create a virtual machine in which to install the App Engine. The following minimum requirements are recommended:
- 64-bit CPU
- 2 GB RAM minimum, 4 GB recommended
- 100 GB disk space
- Internet connection
Attach the ISO to the virtual machine and proceed with installation. By default, half of the available disk space will be reserved for image building. If you customize the partitioning scheme you must leave unallocated LVM space for image builds.
Note: Do not enable disk encryption.
System Configuration¶
After the install, you must modify a number of system configuration files.
Log into the console with username root
and the password chosen at install
time.
/etc/sysconfig/network : App Engine requires a valid hostname other than
“localhost”. If one has not been assigned by DHCP, set it here. The hostname
must be resolveable, so if it is not then add it to /etc/hosts as well.
If the hostname was changed, reboot or set it manually with the hostname
command.
/etc/ssh/sshd_config : The amiconfig
daemon disables password SSH logins
by default when used with certain virtualization platforms.
- Look for a line containing
PasswordAuthentication no
and delete it, if it exists. - Run
chkconfig amiconfig off
to prevent amiconfig from modifying the configuration in the future. - Run
service sshd restart
so the changes take effect.
At this point you may wish to switch to using SSH for convenience rather than direct console access.
/root/.conaryrc : Create this file containing the following line:
includeConfigFile https://updates.sas.com/conaryrc
This will ensure that system updates can find the App Engine upstream repositories.
/etc/conary/system-model : In this file, change group-rbuilder-appliance
to
group-rbuilder-devel
. Save your changes, then run conary updateall
.
This will both bring the App Engine to the latest build if the ISO is out of
date, and also install all of the developer tools and libraries that are not in
the ISO.
App Engine Configuration¶
Edit /etc/rbuilder.pp. Set $admin_email
. Set project_domain to
something unique to your App Engine install, for example “bobs-appengine”.
Repository hostnames for newly created projects will be constructed from this
value. project_domain does not need to be resolveable. Namespace and
project_domain can be changed later, but will not affect existing projects.
Run puppet apply --debug /etc/rbuilder.pp
. This will adjust additional
system configuration, create the App Engine configuration, and start services.
Run /usr/share/rbuilder/scripts/mint-admin user-add
to create your
App Engine user account.
Note: Do not name the App Engine account “admin”.
Using useradd
, create a non-root system user account for development
purposes. It does not have to have the same name as the App Engine user created
above.
Developer Setup¶
This section details how to check out the App Engine source code, build it, and reconfigure the running App Engine run out of the checkout instead of the installed packages. It is not necessary to perform this step immediately; you can come back to it after verifying initial operation of the App Engine installation if you wish.
First, as root, create a directory in which to place the checkout.
mkdir /srv/code
chown myuser:myuser /srv/code
Then, as the non-root user, checkout the App Engine codebase from Github.
sudo -u myuser -i
cd /srv/code
git clone https://github.com/sassoftware/appengine -b master
./appengine/multigit
make -C appengine
Finally, as root, insert the newly-built checkout into the Python search path:
make -C /srv/code/appengine install-pth
Reboot the App Engine to complete the initial setup.
rbuild Configuration¶
rbuild is the primary command-line tool for interacting with an App Engine.
Switch to the development user by logging out and back in or using sudo -u
myuser -i
. Run rbuild config --ask
. You can accept the defaults when
present.
Run rbuild config --conaryrc --rmakerc
to finish preparing the rbuild environment.
Example Project¶
The following will create an example project with a CentOS minimal install and some extra packages and build an image.
Create a project and branch to work in. Run rbuild create project
and
give the following answers:
Project name: Example Project
Project description:
Unique name: example
Domain name:
Create a branch of the project using rbuild create branch
:
Project name: example
Branch name: 1
Branch description:
Namespace:
Platform: 1 (or whichever number corresponds to CentOS 6)
Now initialize the checkout with rbuild init example 1
and cd
example-1/Development
.
Next create “image definitions”, which describe which kind of images this
project will build. Run rbuild add imagedef vmwareImage x86_64
to add a
VMware Workstation image output. For “Image name” give “vmware64”, and leave
the rest of the answers at their defaults. To see what other image types are
available, see rbuild list imagetypes
.
Create a “group recipe” to describe which components will go into the image.
Run rbuild checkout group-example-appliance
, then edit
group-example-appliance/group-example-appliance.recipe
. Set the “version”
variable to a non-empty string (e.g. “1”). Change “pass” at the end to the following:
r.add("rsync")
r.add("vim-enhanced")
Save and close the recipe, then run rbuild build groups
and finally
rbuild build images
. At the end of the image build, rbuild will print a url
which you can download to get your VMware image.