This document is the list of servers and installed software for ASF INFRA.

For adding additional infrastructure see
 https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=127406622

Additional compute resource donations for the Apache Cassandra project are
appreciated. If you have questions about compute resource donations, ask
on the dev mailing list <dev@cassandra.apache.org>.

The installed OS software is the stock online.net Ubuntu 18.04 LTS amd64 image
with only their default installation of bind9 removed:
  $ sudo apt-get autoremove --purge bind9
  $ sudo rm -r /var/cache/bind

On AWS you are free to re-use the public AMI `ami-02cd664c0e9899a91 cassandra-jenkins-host-v3`.
You will find this AMI in region `us-west-2`.

It is highly prefferable to provision nodes in a such way that its reboot nor shutdown / start will
change node's IP address. Use Elastic IPs for this. The default limit per region is 5. You may 
ask for more in console https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/elastic-ip-addresses-eip.html#using-instance-addressing-limit

Edit sudoers to allow INFRA to sudo without password, or provide them with the password.
For example, set:  %sudo   ALL=(ALL:ALL) NOPASSWD:ALL
  $ sudo visudo

Ensure the additional (500GB) data volume is mounted (and added to `/etc/fstab` at `/home/jenkins`

Add jenkins user:
  $ sudo groupadd -g 910 jenkins
  $ sudo useradd -m -u 910 -g 910 -s /bin/bash jenkins

Add ssh pub key from puppet deployment repo:
  https://github.com/apache/infrastructure-puppet/blob/deployment/data/ubuntu/1404.yaml#L295
  $ sudo mkdir /home/jenkins/.ssh
  $ sudo sh -c "echo 'ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAIEAtxkcKDiPh1OaVzaVdc80daKq2sRy8aAgt8u2uEcLClzMrnv/g19db7XVggfT4+HPCqcbFbO3mtVnUnWWtuSEpDjqriWnEcSj2G1P53zsdKEu9qCGLmEFMgwcq8b5plv78PRdAQn09WCBI1QrNMypjxgCKhNNn45WqV4AD8Jp7/8=' > /home/jenkins/.ssh/authorized_keys"
  $ sudo chown -R jenkins:jenkins /home/jenkins/.ssh
  $ sudo chmod 700 /home/jenkins/.ssh
  $ sudo chmod 600 /home/jenkins/.ssh/authorized_keys

Install and Configure Puppet:
    1. I added an 'asf999' user which has a pub key file containing keys from the Infra Team. (It has our standard uid/gid of 910)
        (See also: https://github.com/apache/infrastructure-puppet/blob/deployment/data/common.yaml#L55 )
    2. The asf999 user has sudo no passwd (configured in visudo)
    3. Installed Puppet 6  (Not Puppet 5 that Bionic would normally install)
         and configured the puppet.conf file ready for use
      3a. wget https://apt.puppetlabs.com/puppet-release-bionic.deb
      3b. dpkg -i puppet-release-bionic.deb
      3c. apt-get update
      3d. apt-get install -y puppet-agent
      3e. cat >> /etc/puppetlabs/puppet/puppet.conf << EOF
        [main]
        server = pm01-lw-us.apache.org
        EOF


Ensure `hostname` is configured to the server's public ip.


----

Jenkins Agents for ci-cassandra.apache.org:

All have label 'cassandra'. Agents with 32GB+ RAM also have the label 'cassandra-large'.

cassandra1  - 163.172.73.141 - Ubuntu 18.04 LTS amd64, 32G RAM, donated by Datastax
cassandra2  - 163.172.73.156 - Ubuntu 18.04 LTS amd64, 32G RAM, donated by Datastax
cassandra3  - 163.172.4.20   - Ubuntu 18.04 LTS amd64, 32G RAM, donated by Datastax
cassandra4  - 163.172.4.140  - Ubuntu 18.04 LTS amd64, 32G RAM, donated by Datastax
cassandra5  - 163.172.4.150  - Ubuntu 18.04 LTS amd64, 32G RAM, donated by Datastax
cassandra6  - 163.172.4.175  - Ubuntu 18.04 LTS amd64, 32G RAM, donated by Datastax
cassandra7  - 163.172.4.184  - Ubuntu 18.04 LTS amd64, 32G RAM, donated by Datastax
cassandra8  - 52.38.142.130  - Ubuntu 18.04 LTS amd64, 32G RAM, m4.2xlarge, donated by Instaclustr
cassandra9  - 34.223.128.131 - Ubuntu 18.04 LTS amd64, 32G RAM, m4.2xlarge, donated by Instaclustr
cassandra10 - 34.209.95.9    - Ubuntu 18.04 LTS amd64, 32G RAM, m4.2xlarge, donated by Instaclustr
cassandra11 - 52.13.31.44    - Ubuntu 18.04 LTS amd64, 32G RAM, m4.2xlarge, donated by Instaclustr
cassandra12 - 52.88.147.81   - Ubuntu 18.04 LTS amd64, 32G RAM, m4.2xlarge, donated by Instaclustr
cassandra13 - 34.213.143.168 - Ubuntu 18.04 LTS amd64, 32G RAM, m4.2xlarge, donated by Instaclustr
cassandra14 - 54.148.1.179   - Ubuntu 18.04 LTS amd64, 32G RAM, m4.2xlarge, donated by Instaclustr
cassandra15 - 54.189.131.27  - Ubuntu 18.04 LTS amd64, 32G RAM, m4.2xlarge, donated by Instaclustr
cassandra16 - 54.201.88.175  - Ubuntu 18.04 LTS amd64, 32G RAM, m4.2xlarge, donated by Instaclustr
cassandra17 - 44.230.121.32  - Ubuntu 18.04 LTS amd64, 32G RAM, m5.2xlarge, donated by Amazon
cassandra18 - 44.230.213.15  - Ubuntu 18.04 LTS amd64, 32G RAM, m5.2xlarge, donated by Amazon
cassandra19 - 44.231.106.18  - Ubuntu 18.04 LTS amd64, 32G RAM, m5.2xlarge, donated by Amazon
cassandra20 - 44.231.194.19  - Ubuntu 18.04 LTS amd64, 32G RAM, m5.2xlarge, donated by Amazon
cassandra21 - 44.233.81.188  - Ubuntu 18.04 LTS amd64, 32G RAM, m5.2xlarge, donated by Amazon
cassandra22 - 50.112.217.24  - Ubuntu 18.04 LTS amd64, 32G RAM, m5.2xlarge, donated by Amazon
cassandra23 - 50.112.240.23  - Ubuntu 18.04 LTS amd64, 32G RAM, m5.2xlarge, donated by Amazon
cassandra24 - 52.12.57.190   - Ubuntu 18.04 LTS amd64, 32G RAM, m5.2xlarge, donated by Amazon
cassandra25 - 52.27.28.244   - Ubuntu 18.04 LTS amd64, 32G RAM, m5.2xlarge, donated by Amazon
cassandra26 - 54.185.77.39   - Ubuntu 18.04 LTS amd64, 32G RAM, m5.2xlarge, donated by Amazon
cassandra27 - 54.188.214.16  - Ubuntu 18.04 LTS amd64, 32G RAM, m5.2xlarge, donated by Amazon
cassandra28 - 54.190.165.16  - Ubuntu 18.04 LTS amd64, 32G RAM, m5.2xlarge, donated by Amazon
cassandra29 - 54.212.144.24  - Ubuntu 18.04 LTS amd64, 32G RAM, m5.2xlarge, donated by Amazon
cassandra30 - 54.214.96.70   - Ubuntu 18.04 LTS amd64, 32G RAM, m5.2xlarge, donated by Amazon
cassandra31 - 54.71.239.65   - Ubuntu 18.04 LTS amd64, 32G RAM, m5.2xlarge, donated by Amazon
cassandra32 - 64.18.213.245  - Ubuntu 18.04 LTS amd64, 32G RAM, 16 core, donated by iland
cassandra33 - 64.18.213.246  - Ubuntu 18.04 LTS amd64, 32G RAM, 16 core, donated by iland
cassandra34 - 64.18.213.247  - Ubuntu 18.04 LTS amd64, 32G RAM, 16 core, donated by iland
cassandra35 - 64.18.213.248  - Ubuntu 18.04 LTS amd64, 32G RAM, 16 core, donated by iland
cassandra36 - 64.18.213.249  - Ubuntu 18.04 LTS amd64, 32G RAM, 16 core, donated by iland


----

Contacts for system donators, when console hands may be needed by INFRA:

  Datastax: Joshua McKenzie <jmckenzie@apache.org>

  Instaclustr: Stefan Miklosovic <stefan.miklosovic@instaclustr.com>
               alternative group list: admin@instaclustr.com

  Amazon: cassandra-hardware@amazon.com (Steve Mayszak)

  iland: Julien Anguenot <julien@anguenot.org>
