1. 02 Feb, 2016 2 commits
  2. 01 Feb, 2016 5 commits
  3. 29 Jan, 2016 4 commits
  4. 28 Jan, 2016 8 commits
  5. 27 Jan, 2016 7 commits
  6. 26 Jan, 2016 7 commits
  7. 25 Jan, 2016 7 commits
    • Merge pull request #2724 from edx/max/ansible-provision-verbose · f28a2523
      Add verbose option to aid debugging failed builds
      Max Rothman committed
    • Refactor of role to handle initialization and reruns · e650a267
      Previously on this branch, it would attempt to create a superuser and
      initialize the replica set after the local host exemption had passed
      (once a mongod is started with a keyfile and the replicationSetName
       config file option or --replSet command line argument, you can't create
       users using the localhost exemption anymore ).
      
      This necesarily complicates the logic and requires us to track if we're
      initializing a replica set or not (with facts) and to template out
      /etc/mongod.conf twice in the initialization case.
      
      Further modifications to the replica set can be run against all the
      members and will install mongo on new machines while updating the
      replica set on the old machines.  With a further commit on this branch,
      we can avoid needlessly restarting mongo on all machines in the cluster.
      
      When we run this on an existing cluster, this stops and starts mongo for
      all machines it is run against.  We can't rely on the notify: since that
      happens at the end of the play and during initial cluster setup, we need
      to restart and pick up the changed config.
      
      Try to stick sensible tags on things
      
      Ensure mongo restarts on the cluster key file change
      
      Add a few playbook notes about common operations
      Kevin Falcone committed
    • Refactor our logic into two functions and two loops · 7eaaa323
      I believe the loops will be easier to debug in the long run.
      Essentially, we have a shallow compare loop in check_config_subset
      and then a deep compare loop in is_member_subset.
      
      Both functions allow extra information in the config that comes back
      from Mongo, since Mongo tracks things like votes: slaveDelay: etc that
      may not be reflected in the configuration you pass in.
      Kevin Falcone committed
    • Upgrades to mongo_replica_set to handle initialization · cda15d39
      Do a bit more error checking before asking for the replica set.
      
      The new mongo play wants to be able to run this against an unconfigured
      Mongo to find out "Do you even have a replica set?" which this can now
      answer (the try/except portion).
      
      In the case where mongo was started without a replSet configured (or
      running getCmdLineOpts fails for an OperationFailure reason), we
      return a dictionary where status is not included to allow tasks to
      detect the failure.  Unfortunately, Ansible doesn't provide an easy way
      to log back why you didn't get a replica set doc.
      
      Documentation improvements for this module
      
      Discusses the return values and some examples of checking them.
      
      Simplify get_replset
      
      If the find_one for a replset fails, just return None.
      We don't need to worry about getting back a dictionary which contains a
      'config' key (presumably this is from an earlier iteration of the code
      which called getReplSetStatus which does act like that).
      
      Rather than raising the exception, use the friendly error here.
      
      I assume the raise/module.fail_json double header was leftover cruft
      from earlier development.
      
      Make the module work without rs being configured
      
      Initially, this module always tried to find and connect to a primary,
      however, during replica set initialization, there is no primary so we
      need to fall back to just connecting to the machine specified.
      
      This is detected by catching the replSetGetStatus failure and falling
      back to the bare get_client method which refactors the connection.
      Kevin Falcone committed
    • OPS-967: Make mongo_3_0 role idempotent · 015b8bce
      Remove check for mongo 2.4 since this is the mongo_3_0 role
      This was probably carried over from the mongo 2 role. I see no reason
      why mongo 2.x and mongo 3 couldn't coexist on the same machine.
      
      Remove old hugepages init script check
      This was probably added while we were still iterating on our mongo 3
      deployment, but it should no longer be necessary.
      
      Clean up ansible syntax
      
      Don't move the old mongo data dirs
      This actually skips for edX because we provision machines that already
      have {{mongo_data_dir}} mounted on an external disk.  However, for
      non-edX use, this could fail if you turn on WiredTiger since it will
      move mmapv1 files into the mongo_data_dir and then mongo will fail to
      start because it has been told to use WiredTiger.
      
      Don't make this a serial play
      We usually run this on 3 machines, so serial: 3 was equivalent to
      ansible's default of "run everything in parallel" but this causes
      problems if you ever run it on 4 like we do for prod envs.
      In addition, this prevents run_once from working properly, and there are
      a number of things we only one to do on one machine (like creating a
      superuser).
      Max Rothman committed
    • rename play to match asg · fc35e056
      Fred Smith committed