Giter VIP home page Giter VIP logo

usmqe-setup's People

Contributors

dahorak avatar ebondare avatar fbalak avatar ltrilety avatar mbukatov avatar mkudlej avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

usmqe-setup's Issues

Move template for usm.ini file into usmqe-tests repository

We have a template file for usmqe ini file here: https://github.com/usmqe/usmqe-setup/blob/master/templates/usm.ini.j2 but this means that the defaults are duplicated in setup and tests repositories. It would be much better to convert the default example file in tests repo into the template we could reuse here in usmqe-setup.

Current defaults, examples and templates:

Related to usmqe/usmqe-tests#89

Deprecation warning because of result|success

In some roles the syntax "result|success" is used. Ansible 2.6.0 issues a warning that this syntax is deprecated and "result is success" should be used instead.

Here is the list of roles that have that issue:

./qe-server/tasks/main.yml
./rh-python36/tasks/main.yml
./rh-python35/tasks/main.yml
./ceph-centos-repo/tasks/main.yml
./gluster-client/tasks/main.yml
./qe-munin-node/tasks/main.yml
./firewall-gluster/tasks/main.yml
./qe-evidence-probe-journald/tasks/main.yml
./qe-evidence-probe/tasks/main.yml
./epel/tasks/main.yml
./gluster-server/tasks/main.yml

etcd expects an IP address to bind to

In a system deployed with tendrl_server.yml I see this in the logs:

Mar 29 20:32:59 tendrl etcd[3499]: expected IP in URL for binding (http://tendrl:2380)
Mar 29 20:32:59 tendrl etcd[3499]: expected IP in URL for binding (http://tendrl:2379)

I suspect that name based binding will lead to problems since there is less control. Should we not be binding to all addresses 0.0.0.0:2379 ? The only downside I could see here is security but that should be handled by tendrl api itself not through network measures.

playbook qe_server.yml fails during installation of ceph-ansible package

We have a package conflict in qe_server playbook, which fails during installation of ceph-ansible package:

TASK [qe-server : Install ceph-ansible] **************************************************************************************************************************************************************************************************************************************************************************************
Thursday 29 June 2017  14:47:32 +0200 (0:00:00.537)       0:00:41.122 ********* 
fatal: [mbukatov.example.com]: FAILED! => {"changed": true, "failed": true, "msg": "Error: Package: ceph-ansible-2.2.10-38.g7ef908a.el7.noarch (ceph-ansible)\n           Requires: ansible >= 2.2.0.0\n           Installed: ansible-2.1.2.0-1.el7.noarch (@epel)\n               ansible = 2.1.2.0-1.el7\n", "rc": 1, "results": ["Loaded plugins: fastestmirror\nLoading mirror speeds from cached hostfile\n * base: mirror.slu.cz\n * extras: ftp.agh.edu.pl\n * updates: mirror.slu.cz\nResolving Dependencies\n--> Running transaction check\n---> Package ceph-ansible.noarch 0:2.2.10-38.g7ef908a.el7 will be installed\n--> Processing Dependency: ansible >= 2.2.0.0 for package: ceph-ansible-2.2.10-38.g7ef908a.el7.noarch\n--> Finished Dependency Resolution\n You could try using --skip-broken to work around the problem\n You could try running: rpm -Va --nofiles --nodigest\n"]}
	to retry, use: --limit @/home/martin/.ansible/retry-files/qe_server.retry

Expanded error message:

Error: Package: ceph-ansible-2.2.10-38.g7ef908a.el7.noarch (ceph-ansible)
           Requires: ansible >= 2.2.0.0
           Installed: ansible-2.1.2.0-1.el7.noarch (@epel)
               ansible = 2.1.2.0-1.el7
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirror.slu.cz
 * extras: ftp.agh.edu.pl
 * updates: mirror.slu.cz
Resolving Dependencies
--> Running transaction check
---> Package ceph-ansible.noarch 0:2.2.10-38.g7ef908a.el7 will be installed
--> Processing Dependency: ansible >= 2.2.0.0 for package: ceph-ansible-2.2.10-38.g7ef908a.el7.noarch
--> Finished Dependency Resolution
 You could try using --skip-broken to work around the problem
 You could try running: rpm -Va --nofiles --nodigest

I'm running the playbook on my qe server with CentOS:

$ cat /etc/redhat-release 
CentOS Linux release 7.3.1611 (Core)

Gluster Client setup may not survive reboot

When I reboot all machines (including Tendrl machine, GlusterFS servers and a client), it could happen that a client wouldn't be able to mount the the volume during boot, so that the volume is not mounted.

Since Gdeploy creates a fstab entry, running just mount /mnt/volume_usmqe_alpha_distrep_4x2/ would be enough.

There are multiple possibilities how to address this:

  • add extra task to mount the volume after reboot (not sure if a good idea, as it would require to be able to list all volumes)
  • have a playbook to do this mount on a client and run it via pytest fixture (so that a test which requires to work with data on a volume would be sure that the volume is mounted)

Switch gluster setup from loadtheaccumulator/ansible-gluster to gdeploy

Replace current ansbile-gluster based roles and playbooks with gdeploy config files, so that gdeploy will be the only way we would configure and setup gluster.

Reasoning

Based on recent refocus on Gluster, we need to automate much more complex Gluster configurations and to be able to do that, we need to unify Gluster setup so that there is only single way to work setup/configure gluster which could handle all possible gluster configurations we need to test with.

Gdeploy is tested and used by Gluster QE team, who verified that this approach is reasonable.

I would rather not execute gdeploy via ansible, because gdeploy it itself an ansible wrapper, so such integration would be error prone, hard to debug and would invalidate core ansible assumptions.

Details

So instead of playbooks such as:

gluster_peers_bricks.yml

we will have a gdeploy config file:

gluster_peers_bricks.conf

which will be executed via gdeploy:

# gdeploy -c gluster_peers_bricks.conf

Where and how to configure and launch ceph-ansible

Now ceph-ansible is configured on qe_server, which expects to have qe_server in inventory file this way:

[qe_server]
localhost ansible_connection=local ansible_user=jenkins

This needs to be changed, and qe_server should not be listed in inventory file for particular cluster.

add public key fails with ssl error

When I run the tendrl_server playbook I get:
TASK [tendrl-repo : Add public key for master repo] ****************************
fatal: [tendrl]: FAILED! => {"changed": false, "failed": true, "msg": "Failed to validate the SSL certificate for copr-be.cloud.fedoraproject.org:443. Make sure your managed systems have a valid CA certificate installed. You can use validate_certs=False if you do not need to confirm the servers identity but this is unsafe and not recommended. Paths checked for this platform: /etc/ssl/certs, /etc/pki/ca-trust/extracted/pem, /etc/pki/tls/certs, /usr/share/ca-certificates/cacert.org, /etc/ansible"}

Create test setup playbook for FIPS mode

We need playbooks for enabling and disabling FIPS mode on RHEL 7 machines, called something like test_setup.fips.yml and test_teardown.fips.yml. If this procedure is complicated, we can maintain the common tasks via ansible role in roles/fips.

Note that:

  • it's a little tricky, as it requires regeneration of initramfs and reboot
  • for a reliable teardown, we will need to make a backup of original initramfs during setup
  • before starting actual work, we may check that it's not already automated via eg. ansible-rhel7-nist-800-171-cui-role

Details

Documentation: Chapter 8. Federal Standards and Regulations

See also:

Enhance FIPS test setup

Edit /etc/sysconfig/prelink and set prelinking to no if prelink rpm is installed.

This doesn't affect our setup, as we don't have it enabled.

Test setup for testing alerting via Tendrl REST call (idea)

Create python2 script (in bin directory of this repo) which will call Tendrl TEST call for alerts in a loop, saving the response in a logfiles (identified with a timestamp), so that this can be rechecked later.

Create systemd unit file which will control the script, making it a daemon/service. This way, we will make sure that it's running.

Create test setup playbook, which will install this script on a client machine (into /usr/local/bin in a similar way how test setup for wikitarball is done).

Reasoning

We have concept of workload fixtures, which perform some workload and returns the expected values along with a time range, during which the expected values should be reported. Test case can then later ask for data from this time range, and check if it matches. The same run of a workload fixture can be reused for test cases covering alerting via snmp or smtp, but not via Tendrl API/Web - because by the time test case is running, the status has changed long time ago.

To make it possible to test Tendrl API representation of alerting information in the same way as we can do it for snmp or smtp (reusing workload fixtures without a need to rerun the workload from the test itself), I propose to create a script which will poll the Tendrl API and store the results for later inspection by the test case.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.