File: setup_ec2.sh

package info (click to toggle)
aws-crt-python 0.28.4%2Bdfsg-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 78,428 kB
  • sloc: ansic: 437,955; python: 27,657; makefile: 5,855; sh: 4,289; ruby: 208; java: 82; perl: 73; cpp: 25; xml: 11
file content (67 lines) | stat: -rwxr-xr-x 2,134 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
#!/usr/bin/env bash
# Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
# SPDX-License-Identifier: Apache-2.0
set -euo pipefail

display_usage() {
    cat <<EOF
Usage: $0 [OPTIONS]

Sets up an AWS EC2 instance for CodeBuild fleets by:
  1) Installing Nix package manager on a bare EC2 instance
  2) Configuring Nix to be usable by the root user for CodeBuild compatibility
     (Note: This is not officially supported by Nix)

Options:
  -h, --help    Display this help message and exit
EOF
}

setup_nix() {
    echo "=== Setting up nix user, groups and permissions ==="
    sudo groupadd nixbld
    sudo useradd -m -g nixbld -G nixbld nix
    # Give everyone on the system read access to the nix user homedir.
    sudo chmod 755 /home/nix
    echo "Both $HOME and $USER need to be set for the nix installer to work."
    echo "=== Installing Nix ==="
    sudo -u nix bash -c "sh <(curl --proto '=https' --tlsv1.2 -L https://nixos.org/nix/install) --no-daemon"
    echo "=== Enabling Nix flakes ==="
    sudo -u nix bash -c 'mkdir -p ~/.config/nix; echo "experimental-features = nix-command flakes" >> ~/.config/nix/nix.conf'
    # This sidesteps the need to update PATH for every user.
    sudo ln -s /home/nix/.nix-profile/bin/nix /usr/local/bin
    echo "=== Setting up Nix configs for the root user ==="
    sudo -u root bash -c "ln -s /home/nix/.nix-profile ~/"
    sudo -u root bash -c "ln -s /home/nix/.config ~/"
}

setup_sudo() {
    echo "=== Setting up sudo for the nix user, needed for installation ==="
    # The nix installer refuses to install as root, so we need to set up sudo for the nix user.
    sudo bash -c "echo 'nix ALL=NOPASSWD: ALL' > /etc/sudoers.d/nix"
}

check_gnutls_config() {
    if [[ -f "/etc/gnutls/config" ]]; then
        echo "Turning off gnuTLS overrides"
        sudo rm -f /etc/gnutls/config
    fi
}

update_ubuntu_packages() {
    sudo apt update
    sudo apt upgrade -y
}
# main
for arg in "$@"; do
    case $arg in
        -h|--help)
            display_usage
            exit 0
            ;;
    esac
done
check_gnutls_config
update_ubuntu_packages
setup_sudo
setup_nix