Issue 1:
ISSUE TYPE

Bug Report

COMPONENT NAME

ansible-playbook

ANSIBLE VERSION

ansible 2.4.0.0
config file = /etc/ansible/ansible.cfg
configured module search path = [u'/home/sean/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules']
ansible python module location = /usr/lib/python2.7/dist-packages/ansible
executable location = /usr/bin/ansible
python version = 2.7.12 (default, Nov 19 2016, 06:48:10) [GCC 5.4.0 20160609]

CONFIGURATION

No settings changed, confirmed with "ansible-config dump --only-changed" outputting nothing.

OS / ENVIRONMENT

Ubuntu 16.04 managing Ubuntu 16.04

SUMMARY

Exception when running playbook: "ERROR! Unexpected Exception, this is probably a bug: 'CallbackModule' object has no attribute 'set_options'"

A coworker with a Mac host runs the same playbook without issue.

STEPS TO REPRODUCE

Create a playbook. I created one that just prints a debug message and nothing else.

Attempt to run the playbook with ansible-playbook --inventory-file=/path/to/inventory -vvv main.yml

#main.yml
- hosts: development
become: yes
gather_facts: no

tasks:
- name: print debug msg
debug:
msg: 'Hello, World!'

EXPECTED RESULTS

The playbook would run normally.

ACTUAL RESULTS

ansible-playbook 2.4.0.0
config file = /etc/ansible/ansible.cfg
configured module search path = [u'/home/sean/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules']
ansible python module location = /usr/lib/python2.7/dist-packages/ansible
executable location = /usr/bin/ansible-playbook
python version = 2.7.12 (default, Nov 19 2016, 06:48:10) [GCC 5.4.0 20160609]
Using /etc/ansible/ansible.cfg as config file
Parsed /path/to/inventory inventory source with ini plugin
ERROR! Unexpected Exception, this is probably a bug: 'CallbackModule' object has no attribute 'set_options'
the full traceback was:

Traceback (most recent call last):
File "/usr/bin/ansible-playbook", line 106, in <module>
exit_code = cli.run()
File "/usr/lib/python2.7/dist-packages/ansible/cli/playbook.py", line 130, in run
results = pbex.run()
File "/usr/lib/python2.7/dist-packages/ansible/executor/playbook_executor.py", line 90, in run
self._tqm.load_callbacks()
File "/usr/lib/python2.7/dist-packages/ansible/executor/task_queue_manager.py", line 203, in load_callbacks
callback_obj .set_options(C.config.get_plugin_options('callback', callback_plugin._load_name))
AttributeError: 'CallbackModule' object has no attribute 'set_options'
Ansible failed to complete successfully. Any error output should be
visible above. Please fix these errors and try again.

Issue 2:
ISSUE TYPE

Bug Report

COMPONENT NAME

CallBackModule

ANSIBLE VERSION

$ ansible --version
ansible 2.4.0.0
config file = /Users/<REDACTED>/ansible.cfg
configured module search path = [u'/Users/<REDACTED>/ansible-lib/library']
ansible python module location = /usr/local/lib/python2.7/site-packages/ansible
executable location = /usr/local/bin/ansible
python version = 2.7.13 (default, Aug 7 2017, 22:02:14) [GCC 4.2.1 Compatible Apple LLVM 9.0.0 (clang-900.0.28.1)]

CONFIGURATION

ANSIBLE_SSH_CONTROL_PATH(/Users/<REDACTED>/ansible.cfg) = %(directory)s/%%h-%%r
ANSIBLE_SSH_PIPELINING(/Users/<REDACTED>/ansible.cfg) = False
DEFAULT_ACTION_PLUGIN_PATH(/Users/<REDACTED>/ansible.cfg) = [u'/Users/<REDACTED>/ansible-lib/action_plugins']
DEFAULT_CALLBACK_PLUGIN_PATH(/Users/<REDACTED>/ansible.cfg) = [u'/Users/<REDACTED>/ansible-lib/callback_plugins']
DEFAULT_CALLBACK_WHITELIST(/Users/<REDACTED>/ansible.cfg) = ['log_plays_capture', 'mail', 'actionable', 'skippy', 'task_timer', 'version_recorder']
DEFAULT_CONNECTION_PLUGIN_PATH(/Users/<REDACTED>/ansible.cfg) = [u'/Users/<REDACTED>/ansible-lib/connection_plugins']
DEFAULT_FILTER_PLUGIN_PATH(/Users/<REDACTED>/ansible.cfg) = [u'/Users/<REDACTED>/ansible-lib/filter']
DEFAULT_HASH_BEHAVIOUR(/Users/<REDACTED>/ansible.cfg) = merge
DEFAULT_LOOKUP_PLUGIN_PATH(/Users/<REDACTED>/ansible.cfg) = [u'/Users/<REDACTED>/ansible-lib/lookup_plugins']
DEFAULT_MODULE_PATH(/Users/<REDACTED>/ansible.cfg) = [u'/Users/<REDACTED>/ansible-lib/library']
DEFAULT_REMOTE_TMP(/Users/<REDACTED>/ansible.cfg) = $HOME/.ansible/tmp
DEFAULT_STDOUT_CALLBACK(/Users/<REDACTED>/ansible.cfg) = skippy
DEFAULT_TRANSPORT(/Users/<REDACTED>/ansible.cfg) = smart
DEPRECATION_WARNINGS(/Users/<REDACTED>/ansible.cfg) = False
DISPLAY_SKIPPED_HOSTS(/Users/<REDACTED>/ansible.cfg) = False
HOST_KEY_CHECKING(/Users/<REDACTED>/ansible.cfg) = False

OS / ENVIRONMENT

$ sw_vers
ProductName:	Mac OS X
ProductVersion:	10.13
BuildVersion:	17A362a

SUMMARY

After upgrading from Ansible 2.3.2 to Ansible 2.4.0.0 (via pip2), We have a bunch of custom libraries, plugins (action, filter and lookup); I see exceptions in playbook runs.

the full traceback was:

Traceback (most recent call last):
File "/usr/local/bin/ansible-playbook", line 106, in <module>
exit_code = cli.run()
File "/usr/local/lib/python2.7/site-packages/ansible/cli/playbook.py", line 130, in run
results = pbex.run()
File "/usr/local/lib/python2.7/site-packages/ansible/executor/playbook_executor.py", line 90, in run
self._tqm.load_callbacks()
File "/usr/local/lib/python2.7/site-packages/ansible/executor/task_queue_manager.py", line 203, in load_callbacks
callback_obj .set_options(C.config.get_plugin_options('callback', callback_plugin._load_name))
AttributeError: 'CallbackModule' object has no attribute 'set_options'

ACTUAL RESULTS

$ ansible-playbook -i env/qa -u <REDACTED> provision.yml --extra-vars="state=reloaded release=e4" --ask-become-pass --become --become-user=<REDACTED> --vault-password-file=~/.vault_pass --limit=<REDACTED> -vvvv
ansible-playbook 2.4.0.0
config file = /Users/<REDACTED>/ansible.cfg
configured module search path = [u'/Users/<REDACTED>/ansible-lib/library']
ansible python module location = /usr/local/lib/python2.7/site-packages/ansible
executable location = /usr/local/bin/ansible-playbook
python version = 2.7.13 (default, Aug 7 2017, 22:02:14) [GCC 4.2.1 Compatible Apple LLVM 9.0.0 (clang-900.0.28.1)]
Using /Users/<REDACTED>/ansible.cfg as config file
SUDO password:
setting up inventory plugins
Parsed /Users/<REDACTED>/env/qa/inventory inventory source with ini plugin
Loading callback plugin skippy of type stdout, v2.0 from /usr/local/lib/python2.7/site-packages/ansible/plugins/callback/__init__.pyc
ERROR! Unexpected Exception, this is probably a bug: 'CallbackModule' object has no attribute 'set_options'
the full traceback was:

Traceback (most recent call last):
File "/usr/local/bin/ansible-playbook", line 106, in <module>
exit_code = cli.run()
File "/usr/local/lib/python2.7/site-packages/ansible/cli/playbook.py", line 130, in run
results = pbex.run()
File "/usr/local/lib/python2.7/site-packages/ansible/executor/playbook_executor.py", line 90, in run
self._tqm.load_callbacks()
File "/usr/local/lib/python2.7/site-packages/ansible/executor/task_queue_manager.py", line 203, in load_callbacks
callback_obj .set_options(C.config.get_plugin_options('callback', callback_plugin._load_name))
AttributeError: 'CallbackModule' object has no attribute 'set_options'