Skip to content

Commit

Permalink
Create super user as part of Azure deployment
Browse files Browse the repository at this point in the history
  • Loading branch information
c-w committed Jan 25, 2019
1 parent de52916 commit 88853a3
Show file tree
Hide file tree
Showing 3 changed files with 93 additions and 2 deletions.
27 changes: 27 additions & 0 deletions app/server/management/commands/create_admin.py
@@ -0,0 +1,27 @@
from django.contrib.auth.management.commands import createsuperuser
from django.core.management import CommandError


class Command(createsuperuser.Command):
help = 'Non-interactively create an admin user'

def add_arguments(self, parser):
super(Command, self).add_arguments(parser)
parser.add_argument('--password', default=None,
help='The password for the admin.')

def handle(self, *args, **options):
password = options.get('password')
username = options.get('username')

if password and not username:
raise CommandError('--username is required if specifying --password')

super(Command, self).handle(*args, **options)

if password:
database = options.get('database')
db = self.UserModel._default_manager.db_manager(database)
user = db.get(username=username)
user.set_password(password)
user.save()
59 changes: 57 additions & 2 deletions azuredeploy.json
Expand Up @@ -20,14 +20,21 @@
"type": "string",
"minLength": 1,
"metadata": {
"description": "The user name for the Postgres administrator"
"description": "The user name for the admin account."
}
},
"adminContactEmail":{
"type": "string",
"minLength": 1,
"metadata": {
"description": "The contact email address for the admin account."
}
},
"adminPassword":{
"type": "securestring",
"minLength": 16,
"metadata": {
"description": "The password for the Postgres administrator"
"description": "The password for the admin account."
}
},
"appServiceSku": {
Expand Down Expand Up @@ -93,6 +100,7 @@
"databaseConnectionString": "[concat('pgsql://', parameters('adminUserName'), '@', variables('databaseServerName'), ':', parameters('adminPassword'), '@', variables('databaseServerName'), '.postgres.database.azure.com:5432/', parameters('databaseName'))]",
"databaseVersion": "9.6",
"databaseServerName": "[concat(parameters('appName'),'-state')]",
"setupScriptName": "[concat(parameters('appName'),'-setup')]",
"appServicePlanName": "[concat(parameters('appName'),'-hosting')]"
},
"resources": [
Expand Down Expand Up @@ -156,6 +164,53 @@
}
]
},
{
"name": "[variables('setupScriptName')]",
"type": "Microsoft.ContainerInstance/containerGroups",
"apiVersion": "2018-10-01",
"location": "[variables('location')]",
"properties": {
"containers": [
{
"name": "createadmin",
"properties": {
"image": "[parameters('dockerImageName')]",
"command": [
"tools/create-admin.sh",
"[parameters('adminUserName')]",
"[parameters('adminContactEmail')]",
"[parameters('adminPassword')]"
],
"environmentVariables": [
{
"name": "DEBUG",
"value": "False"
},
{
"name": "SECRET_KEY",
"value": "[parameters('secretKey')]"
},
{
"name": "DATABASE_URL",
"value": "[variables('databaseConnectionString')]"
}
],
"resources": {
"requests": {
"cpu": "1",
"memoryInGb": "1.5"
}
}
}
}
],
"osType": "Linux",
"restartPolicy": "Never"
},
"dependsOn": [
"[resourceId('Microsoft.DBforPostgreSQL/servers/', variables('databaseServerName'))]"
]
},
{
"type": "Microsoft.Web/sites",
"apiVersion": "2016-08-01",
Expand Down
9 changes: 9 additions & 0 deletions tools/create-admin.sh
@@ -0,0 +1,9 @@
#!/usr/bin/env bash

if [[ "$#" -ne 3 ]]; then echo "Usage: $0 <username> <email> <password>" >&2; exit 1; fi

set -o errexit

python app/manage.py wait_for_db
python app/manage.py migrate
python app/manage.py create_admin --noinput --username="$1" --email="$2" --password="$3"

0 comments on commit 88853a3

Please sign in to comment.